编辑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
。
-xxx-
您似乎正在独立使用该模型。根据文档http://backbonejs.org/#Model-url,
生成以下形式的 URL:“/[urlRoot]/id”
这意味着,您正在向shopData.json/id
. 此外,您还没有指定 id。
在. console.log(myShop.url())
_ myShop.fetch()
让我们知道输出是什么。此外,可能会分享在 Firebug 或 Chrome 开发工具中看到的 ajax 请求的详细信息。我对两件事感兴趣,请求 url 和服务器返回的响应。(http://getfirebug.com/network)