1

backbone.jsを使用してJenkins REST APIをラップしようとしています。

ジョブの詳細を取得するには、次のような URL で GET を実行します。

https://jenkins.example.com/jenkins/job/test-job/api/json/?jsonp=jQuery18207471012645401061_1351262357807&_=1351262357850

私の非常に単純なバックボーン アプリは次のようになります。

$(function () {
   var Job = Backbone.Model.extend({
      defaults:{
         displayName:'not set'
      }
   });

   var AppView = Backbone.View.extend({
      el:$("#hudApp"),

      initialize:function () {
         var job = new Job;
         job.url = 'https://jenkins.example.com/jenkins/job/test-job/api/json/?jsonp=?';
         job.fetch({dataType:"jsonp"});

         alert(job.get('displayName'));
      });
   });

   var app = new AppView;
});

HTTP リクエストが Jenkins サーバーにヒットし、次のような応答を受け取っていることがわかります。

jQuery18207471012645401061_1351262357807(
{
description: "build a nice test job",
displayName: "test-job",
}
)

ただし、モデルが更新されていません (alert()常に「設定されていません」と表示されます)。

誰かが私が間違っていることを見つけることができますか?

4

1 に答える 1

3

完全なオペレーター エラーです。どうやら、AJAXの「A」は「非同期」を表しています...

取得コードを次のように変更する必要がありました。

        job.fetch({
           dataType:"jsonp",
           success: function(model, response) {
              alert(model.get('displayName'));
           }
        });

愚かな質問で申し訳ありません。JSONP で Backbone を使用する方法の例を見つけるのに苦労したので、これが少なくとも Google にとって役立つことを願っています。

于 2012-10-26T15:21:59.933 に答える