如何在Backbone的model.save错误回调中获取错误响应?

时间:2012-08-08 18:04:32

标签: ajax backbone.js error-handling response

model.save上的Backbone错误回调只需要两个参数error: function(model, response){}。在我的应用程序中,如果乐观锁定失败,则设置409 conflict状态(可以轻松检索)。但是,服务器还会发送详细说明问题的自定义错误消息。

现在,服务器使用更新的模型 发送更新的JSON响应以及错误消息 ,说明问题所在。看起来,骨干抑制了这个错误。根据jquery的错误回调签名是error(jqXHR, textStatus, errorThrown)。似乎Backbone丢弃了最后一部分,因此我似乎无法掌握服务器的自定义响应。

这是一个好习惯吗?我真的不希望复制骨干的保存功能只是为了访问errorThrown参数。有无缝的方式来访问errorThrown吗?或者更好的做法是不让服务器发送自定义响应,只发送代码并让客户端构建响应以供查看?

2 个答案:

答案 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。根据服务器构建响应的方式,其中一个属性可能包含您正在查找的错误文本。