【发布时间】:2011-03-31 14:36:30
【问题描述】:
我正在尝试从我的服务器获取一个集合。 我使用的是 0.3.3 版(不是来自 github 的大师) 但是我在这个异常中运行:
Uncaught TypeError: Cannot use 'in' operator to search for 'id' in {id=MyId, active=true}
jQuery.jQuery.extend._Deferred.deferred.resolveWith (jquery.js:869)
done (jquery.js:6591)
jQuery.ajaxTransport.send.callback
这是我创建错误的方式:
var MyModel = Backbone.Model.extend();
var MyCollection = Backbone.Collection.extend({
url: '/api/collection',
model: MyModel
});
var coll = new MyCollection();
coll.fetch();
/api/collection 中的元素以 JSON 格式解析。 我试图以各种格式返回它们
["Id1", "Id2", ... ]
[{id: "Id1, somethingElse: "..."}, ...]
{id1: { id1s content}, id2: { ... }, ...}
但是错误总是一样的。 这段代码有什么问题?
[编辑]通过coll.fetch({error: errorFunc});设置错误无济于事,异常保持不变。
[Edit2] 看来一切正常,直到collection.fetch() 使用响应对象调用collection.refresh()。我没有覆盖任何这些函数。
[Edit3] 错误在collection.add() 方法中,原因是我的元素是一个字符串列表...我的服务器发送错误。
【问题讨论】:
-
你说你的服务器发错了;您现在如何发送它们以使其有效?可能对其他人有帮助(比如我)
-
而不是 ["id1", "id2", ..., "idn"] 客户端期望 [{"id": "id1"}, ... {"id": " idn"}]
-
我实际上是在从我的服务器中回显 '[{"id":"100"}]' 来测试它......但是,它仍然给出了同样的错误......你的回声部分是什么样的?
标签: javascript jquery rest backbone.js