我已阅读有关此问题的Stackoverflow上的所有帖子,并尝试了以下内容:
1)添加$.param({})
包装器
messages.fetch({
data: $.param({ limit: 14 }),
});
2)
将traditional
设为true
messages.fetch({
data: { limit: 14 },
traditional: true
});
3)
将processData
设为true
messages.fetch({
data: { limit: 14 },
processData: true,
});
尽管如此,这些方法都不起作用。我在这里缺少什么吗?
答案 0 :(得分:0)
对于我认为你要做的事情,你需要在模型/集合上使用“url”属性。 Fetch是GET类型,而不是PUT或POST,因此您不会向服务器发送“数据”。尝试以下内容:
请注意 $ .param({limit:14})返回“limit = 14”重点是,这不是服务器的有效序列化对象明白了。
如果您的“ fetch ”方法是“ HttpGet ”
var MyModel = Backbone.Model.extend({
// place holder for models api. Also look at: http://backbonejs.org/#Model-urlRoot
_baseUrl = 'api/somewhere/great'
// see: http://backbonejs.org/#Model-url
url: function() {
// this returns 'api/somewhere/great?limit=14';
return this._baseUrl + '?' + $.param({ limit: 14 });
}
});
现在,如果您想要 HttpPut 或 HttpPost ,那么您可以覆盖“fetch”并执行以下操作:
var MyModel = Backbone.Model.extend({
url = 'api/somewhere/great'
fetch: function(options) {
options = options || {
data: {
limit: 14
}
};
/*
signature method of sync: Backbone.sync = function (method, model, options)
*/
return this.sync("create", this, options);
}
});
参考文献: