BackboneJS model.fetch()不成功

时间:2012-11-30 13:09:55

标签: backbone.js model fetch

您好我有这个型号:

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

现在我总是收到错误消息 - 永远不会成功: - (

感谢您的帮助。

1 个答案:

答案 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