1

嗨,我有这个模型:

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});

现在我总是收到错误消息-从未成功:-(

谢谢你的帮助。

4

1 回答 1

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

-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

于 2012-11-30T13:34:39.797 回答