如何找到由backbone fetch生成的错误

5

我对backbone不是很熟悉,但我已经编写了一个基本模型,当尝试为我的模型获取数据时,我知道服务器正在返回数据,但fetch正在调用错误回调函数。

这没关系,但我不知道如何找到生成的错误。

以下是相关代码:

  mUser = Backbone.Model.extend({
    urlRoot: CURRENT_URL+'user',
    defaults: {
        name: '',
        age: 22,
        email: ''
    },
    initialize: function(){

    }
  });

  user = new mUser({'id':1});

  var x = user.fetch({
    error:   function(model, xhr, options){
       alert('Error on fetch')
       console.log(xhr.responseText);
    },
    success: function(model, response, options) {
        alert(user.toJSON());
    }
  })
  console.log('x email',x.email)

正如我所提到的,responseText中确实包含了我从服务器期望看到的数据,即:

{'id':'1','name':'joe','age':'25','email':'joe@example.com'}

也许我应该提一下,我是作为PhoneGap Android应用程序的一部分来进行这个操作的。我认为这对我遇到的问题并不重要,但它确实限制了我的调试选项。


你有检查返回的HTTP状态码吗? - soulcheck
当前的CURRENT_URL值是多少,你是如何监控请求的? - soulcheck
CURRENT_URL = "http://"+CURRENT_IP+":"+CURRENT_PORT+"/"这只是我在本地机器上运行的服务器的IP。我知道URL是正确的,有两个原因:1)服务器通过将其响应写入控制台来对请求做出反应,我可以看到它,2)responseText具有服务器返回的值。难道没有一种方法让backbone告诉我错误是什么吗? - dl__
@soulcheck 你对特定领域感兴趣吗?如果我只记录xhr对象,我只会得到[object Object]。我可以记录xhr.status,它会给我“200”,我也可以记录xhr.statusText,它会给我:“OK”,所以我认为我的请求的HTTP方面没有任何问题。然而,Backbone显然不高兴,并且不会告诉我原因。 - dl__
你可能会遇到 parsererror 错误。你可以添加一个 complete 回调函数并记录 textStatus 参数吗?例如:complete: function(xhr, textStatus) { console.log(textStatus); } - Ben
显示剩余10条评论
1个回答

13

当jQuery试图解析来自服务器的JSON响应时,您可能会收到一个parsererror。为了检查是否出现parsererror,请添加一个complete回调函数并检查textStatus参数。例如:

user.fetch({
  complete: function(xhr, textStatus) {
    console.log(textStatus);
  }
});

当我添加这个时,我得到的textStatus值只是"error"。我从服务器得到了200。在我的情况下,问题是我只是从file://加载网页,并通过http://调用REST服务。 - Levin Magruder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接