将模型实例添加到集合后,我会发出POST请求来添加它。然后完成GET请求以从服务器获取模型。有没有办法不通过GET请求,只有POST请求?此外,是否有可能获得成功和错误回调函数来响应POST请求的成功和失败?
我想这样做是因为该集合有一个URL来解析返回的JSON数据,因此GET请求不起作用,但POST请求确实有效。我不想在无效的端点上执行GET请求。
答案 0 :(得分:2)
GET请求是不必要的。在POST处理程序的服务器上,您应该将JSON结果返回给表示模型的客户端。当生成诸如id的字段时,这尤其有用。然后在成功回调的客户端上,您可以获取POST返回的模型。
在以下示例中,如果成功,则会向集合添加新模型。我还包括错误回调,如果客户端验证失败或POST失败,它将触发:
var isNew = this.model.isNew();
this.model.save({}, {
success: function(model, response) {
if (isNew && this.collection) {
this.collection.add(model);
}
},
error: function(model, response) {
var errorMsg;
// Response may be string (if failed client side validation or an AJAX response (if failed server side)
if (_.isString(response))
errorMsg = response;
else
errorMsg = response.responseText;
}
});
答案 1 :(得分:1)
您遵循的流程确实是不必要的。您应该在集合上使用create
来直接添加模型,并在同一时间调用sync
(在这种情况下为POST)。
例如:
collection.create({foo: 'bar'});
或collection.create(unsaved_model);
如果不成功,调用create
的结果将返回(已保存)模型或false
。此外,可以通过执行
before
添加到集合中
collection.create({foo: 'bar'}, {wait: true});
documentation是你的朋友。