model.save
上的Backbone错误回调只需要两个参数error: function(model, response){}
。在我的应用程序中,如果乐观锁定失败,则设置409 conflict
状态(可以轻松检索)。但是,服务器还会发送详细说明问题的自定义错误消息。
现在,服务器使用更新的模型 发送更新的JSON响应以及错误消息 ,说明问题所在。看起来,骨干抑制了这个错误。根据jquery的错误回调签名是error(jqXHR, textStatus, errorThrown)
。似乎Backbone丢弃了最后一部分,因此我似乎无法掌握服务器的自定义响应。
这是一个好习惯吗?我真的不希望复制骨干的保存功能只是为了访问errorThrown
参数。有无缝的方式来访问errorThrown
吗?或者更好的做法是不让服务器发送自定义响应,只发送代码并让客户端构建响应以供查看?
答案 0 :(得分:2)
Backbone将2个参数传递给成功案例和错误案例。第一个是您要保存的模型,第二个是来自服务器的响应。如果响应是JSON,您可以通过调用response.responseJSON
this.model.save(null, {
success: function(model, response) {
console.model(response);
},
error: function (model, response) {
console.log(response.responseJSON);
}
});
答案 1 :(得分:0)
response
对象应具有属性.responseText
和.statusText
。根据服务器构建响应的方式,其中一个属性可能包含您正在查找的错误文本。