在开始之前,我知道响应不是jsonp,而是json。
所以下面的代码会产生一个结果:
$.ajax({
type: 'GET',
url: 'http://us.battle.net/api/wow/character/Alexstrasza/Leica?fields=items,stats,talents',
dataType: 'jsonp',
success: function(data){
console.log(data);
},
error: function() { console.log('Uh Oh!'); },
statusCode: {
404: function() {
$().html("not working");
}
},
jsonp: 'jsonp'
});
但是,当我与骨干网进行完全相同的调用时,我会收到错误“Uncaught SyntaxError:Unexpected token:”(即,它不是jsonp)
define([
'jquery',
'backbone',
'models/results/panel.model'
],
function(
$,
Backbone,
PanelModel
){
var BoxCollection = Backbone.Collection.extend({
model: PanelModel,
url: function(){
return "http://us.battle.net/api/wow/character/Alexstrasza/Leica?fields=items,stats,talents";
},
initialize: function(models, options){
this.path = options.path;
},
sync: function(method, model, options){
options.timeout = 10000;
options.dataType = "jsonp";
options.processData = true;
options.type = 'READ';
options.url = this.url();
return Backbone.sync(method, model, options);
},
parse: function(resp, options){
console.log(resp);
}
});
return BoxCollection;
});
根据我的理解,Backbone使用jQuery.ajax作为所有ajax调用的基础方法,我认为它们的行为相同,但显然不是这样。
谢谢
答案 0 :(得分:1)
您的Backbone版本缺少jsonp
参数。尝试
sync: function(method, model, options){
options.timeout = 10000;
options.dataType = "jsonp";
options.processData = true;
options.type = 'READ';
options.url = this.url();
options.jsonp = 'jsonp';
return Backbone.sync(method, model, options);
}