0

在将模型实例添加到集合后,我会执行 POST 请求来添加它。然后执行 GET 请求以从服务器获取模型。有没有办法不接受 GET 请求,只接受 POST 请求?另外,是否可以获取成功和错误回调函数来响应 POST 请求的成功和失败?

我想这样做是因为该集合有一个解析返回的 JSON 数据的 URL,因此 GET 请求不起作用,但 POST 请求确实起作用。我不想在不起作用的端点上发出 GET 请求。

4

2 回答 2

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;
    }
});
于 2012-04-16T03:41:00.763 回答
1

您遵循的过程确实是不必要的。您应该create在集合上使用直接添加模型,并同时调用sync(在本例中为 POST)。

例如:

collection.create({foo: 'bar'});或者collection.create(unsaved_model);

调用的结果create将返回(保存的)模型或者false如果这不成功。此外,可以等待模型被保存before添加到集合中

collection.create({foo: 'bar'}, {wait: true});

文档是你的朋友。

于 2012-04-17T16:34:50.760 回答