3

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

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

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

4

2 回答 2

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);
    }
});
于 2016-04-19T19:34:08.760 回答
0

response对象应具有属性.responseText.statusText. 根据您的服务器构建其响应的方式,这些属性之一可能包含您要查找的错误文本。

于 2012-08-08T18:14:38.537 回答