在将模型实例添加到集合后,我会执行 POST 请求来添加它。然后执行 GET 请求以从服务器获取模型。有没有办法不接受 GET 请求,只接受 POST 请求?另外,是否可以获取成功和错误回调函数来响应 POST 请求的成功和失败?
我想这样做是因为该集合有一个解析返回的 JSON 数据的 URL,因此 GET 请求不起作用,但 POST 请求确实起作用。我不想在不起作用的端点上发出 GET 请求。
在将模型实例添加到集合后,我会执行 POST 请求来添加它。然后执行 GET 请求以从服务器获取模型。有没有办法不接受 GET 请求,只接受 POST 请求?另外,是否可以获取成功和错误回调函数来响应 POST 请求的成功和失败?
我想这样做是因为该集合有一个解析返回的 JSON 数据的 URL,因此 GET 请求不起作用,但 POST 请求确实起作用。我不想在不起作用的端点上发出 GET 请求。
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;
}
});
您遵循的过程确实是不必要的。您应该create
在集合上使用直接添加模型,并同时调用sync
(在本例中为 POST)。
例如:
collection.create({foo: 'bar'});
或者collection.create(unsaved_model);
调用的结果create
将返回(保存的)模型或者false
如果这不成功。此外,可以等待模型被保存before
添加到集合中
collection.create({foo: 'bar'}, {wait: true});
文档是你的朋友。