将backbone.js与Jenkins的JSONP API一起使用

时间:2012-10-26 15:01:31

标签: backbone.js jsonp

我正在尝试使用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()始终显示“未设置”)。

有人能发现我做错了吗?

1 个答案:

答案 0 :(得分:2)

完成操作员错误。显然,AJAX中的“A”代表“异步”...

我只需要将我的提取代码更改为:

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

抱歉这个愚蠢的问题。希望这对谷歌至少有用,因为我很难找到如何使用Backbone和JSONP的例子。