Javascript 带有jsonp的backbone.js
在花了几个小时寻找解决方案之后,我终于在这里发布了这个问题。让我知道我的愚蠢程度:) 代码如下:Javascript 带有jsonp的backbone.js,javascript,json,backbone.js,jsonp,Javascript,Json,Backbone.js,Jsonp,在花了几个小时寻找解决方案之后,我终于在这里发布了这个问题。让我知道我的愚蠢程度:) 代码如下: Model and collection: var app = app || {}; var metricsModel = Backbone.Model.extend({}); var MetricsList = Backbone.Collection.extend({ model:metricsModel, sync: function(method, collections, optio
Model and collection:
var app = app || {};
var metricsModel = Backbone.Model.extend({});
var MetricsList = Backbone.Collection.extend({
model:metricsModel,
sync: function(method, collections, options) {
options.dataType = "jsonp";
return Backbone.sync(method, collections, options);
},
url:<url>
});
View:
app.CommitmentView = Backbone.View.extend({
initialize:function(){
app.metrics = new MetricsList();
app.metrics.bind("change", this.render, this);
app.metrics.fetch({
success: function(collection,response) {
console.log("fetch successful" + response);
},
error: function(collection,response) {
console.log("error" + JSON.stringify(response));
}
});
app.metrics.on('all',this.render,this);
}
});
模型和集合:
var-app=app |{};
var metricsModel=Backbone.Model.extend({});
var MetricsList=Backbone.Collection.extend({
模型:metricsModel,
同步:函数(方法、集合、选项){
options.dataType=“jsonp”;
返回Backbone.sync(方法、集合、选项);
},
网址:
});
视图:
app.CommitmentView=Backbone.View.extend({
初始化:函数(){
app.metrics=new MetricsList();
app.metrics.bind(“change”,this.render,this);
app.metrics.fetch({
成功:功能(收集、响应){
console.log(“获取成功”+响应);
},
错误:函数(收集、响应){
log(“error”+JSON.stringify(response));
}
});
app.metrics.on('all',this.render,this));
}
});
结果:错误{“readyState”:4,“status”:200,“statusText”:“success”}
始终调用错误回调。我对后端没有太多的控制权。只需确保完成以下检查:
服务器用正确的JSON响应—JSON对象数组。在FF和铬上测试。
JSON键是字符串
我如何进一步调试它?请告诉我 所以后端恰好返回了一个json对象。后端使用的REST框架非常灵活,我所要做的就是在URL中用jsonp替换json 旧网址:http:///format/json 新网址:http:///format/jsonp 这是REST框架
感谢@dbaseman的建议/评论您能检查发送的HTTP请求和错误代码吗?对于Chrome或Sagari,您可以通过Web Inspector()看到这一点。@LaurentPerrin问题中没有提到它吗<代码>“readyState”:4,“status”:200,“statusText”:“success”传递给回调的值表明查询正常,但这不是实际的HTTP请求。是您的服务器,还是外部服务器?记住,它需要实际支持JSONP才能工作——它不应该只返回原始JSON,它必须返回包装在Javascript函数中的JSON。@dbaseman服务器是外部的,但我认识这些人,所以他们可以调整它。服务器确实返回原始JSON。我会让这些人在javascript函数中返回JSON。如果有用的话,我会在这里发布。谢谢