【问题标题】:backbonejs collection.fetch error handler骨干js collection.fetch 错误处理程序
【发布时间】:2026-01-04 12:05:01
【问题描述】:

以下主干collection.fetch 代码触发,由于某种原因出错,然后跳转到错误处理程序(如预期的那样),但我真的不知道错误处理程序参数是什么。触发错误时,模型、xhr 和选项参数未定义。我做错了什么?

  var onErrorHandler = function(model, xhr, options) {
      alert(options);
  };

  that.collection = new MembersCollection([]); 
  that.collection.fetch({ success : onDataHandler, error: onErrorHandler, dataType: "jsonp" });

@muistooshort:我完全忘记了 js 参数,谢谢你的提示。

这是我发现的……

Arguments[0] = looks like its just the letter "d"
Arguments[1] = is an object. Has readyState, responseText, status, statusText
Arguments[2] = is an object. Exactly the same as [1]

状态 = 200,文本为“OK”。 responseText 是我希望从 PHP 服务器模型接收到的确切 JSON 数据。

所以我想现在的问题是为什么 collection.fetch 方法将成功结果发送到错误处理程序?我不相信 fetch 回调中这些处理程序的顺序很重要。是吗?

【问题讨论】:

  • 你确定他们都是undefined吗?您可以随时console.log(arguments) 来查看传递的具体内容。
  • 您缺少一些 jsonp 请求所需的 ajax 选项。 *.com/questions/7202603/jquery-ajax-jsonp
  • @muistooshort:我完全忘记了 js 参数,谢谢你的提示。这是我发现的……
  • 不,获取回调的顺序无关紧要,只是经过测试,结果相同。由于某种原因,似乎每次都将成功结果返回给错误处理程序。
  • 我认为第一个参数应该有一个填充的“模型”集合。我看到一个模型数组,但它的长度为 0,所以那里的东西也不起作用。 responseText 有几个 JSON 格式的模型。我很困惑这个 collection.fetch 方法在做什么。

标签: backbone.js error-handling fetch


【解决方案1】:

好的,我找到了获取回调和成功/错误处理程序的参数签名。现在这些设置正确,获取按预期工作。这是工作代码...

  var onDataHandler = function(collection, response, options) {
      console.log('membersview fetch onedatahandler');
      that.render();
  };

  var onErrorHandler = function(collection, response, options) {
      console.log('membersview fetch onerrorhandler');
      alert(response.responseText);
  };

  that.collection = new MembersCollection([]); 
  that.collection.fetch({ success : onDataHandler, error: onErrorHandler });

谢谢大家的回复。我非常需要/感谢您的建议:-)

【讨论】: