骨干:在创建时处理服务器响应

骨干:在创建时处理服务器响应

问题描述:

我有一个处理表单的视图。
这种形式有上点击触发了保存按钮的事件:骨干:在创建时处理服务器响应

var FormView = Backbone.View.extend({ 
    initialize : function(options){ 
     this.collection = new PlayerCollection({url:options.url}); 
     this.collection.bind('add', this.addPlayer); 
     this.collection.bind('reset', this.addAllPlayers); 
    }, 
    saveNewPlayer : function(event){ 

     this.collection.create({ 
     name : this.$form.find('input[name="name"]').val(), 
     }); 
    } 
}); 

(我中省略不需要在这个例子中的一些代码)。

该代码正确保存新模型,将数据发送到服务器并创建与此新模型关联的视图。 但我想知道如何处理服务器响应时,数据发布到它。
例如,如果服务器无法保存数据或发现其他类型的错误,我该如何处理?

我是新来的主干,我从现在开始使用jQuery来编写我的应用程序,所以我习惯于使用successerror回调$.ajax优惠。

骨干提供了类似的回调,添加第二个选项哈希的创建(和读取和保存)命令,就像这样:

this.collection.create({ 
    name : this.$form.find('input[name="name"]').val(), 
},{ 
    error : function(model, response){}, 
    success: function(model, response){} 
}); 
+1

这可能是值得加入到这个答案,你的服务器上你想要什么要做的是以200以外的http状态进行响应。这就是Backbone知道如何执行错误回调。因此,获取dataIn,验证它,授权它,运行一个事务(并且可能出错)等等,你以适当的状态回复(400,500等)。你可以从服务器返回任何你想要的东西(比如错误对象和有关错误的信息),并且可以通过响应参数访问它。 – jmk2142 2012-08-09 19:41:54

+0

好评!一个很好的例子就是在表单验证中使用400-错误,并将服务器发送的验证错误发送给主干中的表单处理代码。 – 2012-08-09 20:11:49

+0

这是在哪里记录?我无法在http://backbonejs.org/#Collection-create – 2012-08-09 20:34:11