在攻击模型之前修改Backbone AJAX响应

时间:2014-01-31 10:04:49

标签: jquery ajax backbone.js

我目前正从服务器获取JSON响应,如下所示:

{
    "id" : 1,
    "number" : "123456",
    "name" : "Some Name",
    "client" {
        "com.test.domain.Client" : 5
    }
}

我需要回答如下:

{
    "id" : 1,
    "number" : "123456",
    "name" : "Some Name",
    "client" {
        "id" : 5
    }
}

我想要挂钩Backbone所做的所有AJAX响应,并将所有匹配^com.test.domain.*$的密钥替换为id。有谁知道我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

您可以通过覆盖模型中接收此响应的解析方法来实现。

例如:

var SampleModel = Backbone.Model.extend({

....

parse: function(serverResponse){
  var serverResponseString = JSON.stringify(serverResponse);
  var modifiedResponseString = serverResponseString.replace("com.test.domain.Client","id");

  return  JSON.parse(modifiedResponseString);

},

....

});

当您从模型的实例中获取或保存时,它们将通过此解析方法。所以你可以修改它以返回你想要的值。

答案 1 :(得分:0)

在模型中定义parse函数,将收到的JSON更改为您想要的。请参阅http://backbonejs.org/#Model-parsehttp://backbonefu.com/2011/11/working-with-api-responses-in-backbone-js-using-parse/