2013-02-19 25 views
1

My Model在服务器上正确保留,客户端上的下列代码段也会收到响应文本“success”。但是,每次我的error回调被执行而不是success覆盖model.save()的成功条件

myModel.save({}, 
{ 
success: function(model, response) { 
    console.log('SUCCESS:'); 
    console.log(response); 
}, 
error: function(model, response) { 
    console.log('FAIL:'); 
    console.log(response); 
} 
}); 

骨干文档指定成功触发只有坚持在服务器上的对象的JSON表示返回到客户端。

但我不能改变服务器端的实现。所以,我怎么能触发成功回调上得到responseText的是“成功”和错误的model.save()

回答

1

有两种方法来解决这个任何其他回应:

  • 继承骨干示范

您可以创建自己的自定义模型,该模型从骨干模型继承。在其中您可以覆盖保存方法。 Read Backbone docs on how to extend their model

在您的自定义保存方法中,您将调用超级保存方法,检查responseText,如果成功,您将调用成功回调。 (请不要阅读如何调用Javascript中父模型的方法骨干文档)

  • 覆盖Backbone.Sync

骨干具有同步模块,基本上在默认情况下使所有的Ajax请求,解析然后调用您在模型上调用保存时指定的成功/错误回调。这很简单。 Take a look at this doc。同样你可以重写这个,做Backbone默认做的事情,但只根据你收到的responseText调用成功/错误回调。