2012-04-13 39 views
0

将模型实例添加到集合后,我会执行POST请求来添加它。然后,GET请求完成从服务器获取模型。有没有办法不到GET请求,只有POST请求?另外,是否有可能获得成功和错误回调函数来响应POST请求的成功和失败?在集合中创建新实例后,请勿在端点(主干)上执行GET请求

我想这样做,因为集合具有解析返回的JSON数据的URL,所以GET请求不起作用,但POST请求确实有效。我不想在不起作用的端点上执行GET请求。

+0

我认为如果你能更具体地说明你的问题是什么以及你想做什么,那真的会有所帮助。 – Hassan 2012-04-16 01:22:37

回答

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

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

例如:

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

调用create将返回的(保存)模型或false,如果这是没有成功的结果。此外,可以等待模式,通过做

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

documentation是你的朋友保存before加入到集合中。

相关问题