您好我有这个型号:
window.shop = Backbone.Model.extend({
initialize: function () {
console.log('initializing shop');
},
urlRoot: "shopData.json",
});
然后我去:
var myShop = new shop();
myShop.fetch({
success: function (model, resp){
console.log(resp);
},
error: function (model, resp){
console.log("error retrieving model");
}}, {wait: true});
现在我总是收到错误消息 - 永远不会成功: - (
感谢您的帮助。
答案 0 :(得分:0)
修改1:
根据您的评论,服务器正在发送正确的响应,但Backbone仍在调用错误函数。在错误回调的开头添加以下行:
error: function (model, resp){
console.log('error arguments: ', arguments);
console.log("error retrieving model");
}
第一行应该打印一个对象数组。数组中的第一个元素应该是jqXhr对象,第二个元素应该是错误的字符串表示。如果单击第一个对象,开发工具将允许您检查其属性。在此处阅读对象的属性http://api.jquery.com/jQuery.ajax/#jqXHR。
使用该信息,您可以验证jQuery是否从服务器收到错误。
如果没有服务器端错误,请检查responseText
属性的值。它包含从服务器返回的字符串数据。 $.ajax
将尝试将该数据解析为JSON。很可能解析是抛出错误而错误处理程序正在被提升。
复制回复文字并将其粘贴到http://jsonlint.com/。验证从服务器发送的响应是否为有效的JSON。请使用console.log
语句的输出和responseText
对象的jqxhr
属性更新您的问题。
-X-X-X -
您似乎独立使用该模型。根据文档http://backbonejs.org/#Model-url,
生成以下格式的网址:“/ [urlRoot] / id”
这意味着,您正在向shopData.json/id
发出请求。此外,您尚未指定ID。
在console.log(myShop.url())
之前插入myShop.fetch()
。让我们知道输出结果。此外,可能会分享在Firebug或Chrome开发工具中看到的ajax请求的详细信息。我对两件事感兴趣,请求url和服务器返回的响应。 (http://getfirebug.com/network)