我希望将骨干模型与服务器同步,并在从服务器收到成功响应时执行一些操作。发送PUT请求并且响应statusCode为200但响应正文为空。仅当响应非空时才会调用成功回调。后端团队不会向我发送任何回复。那么有没有比检查错误回调中的状态代码更好的解决方案。更“正确”?这是代码:
var settingService = Backbone.Model.extend({
"url": "usersettings",
"sync": function(method) {
if (method === "create") {
arguments[0] = "update";
}
return Backbone.sync.apply(this, arguments);
},
});
var SettingsView = Backbone.View.extend({
initialize: function() {
this.services = {
"userSettingsService": new settingService()
};
},
saveSettings: function() {
this.services.userSettingsService.save({
"currency": "USD",
"dateFomat": "DD-MM-YYYY"
}, {
"success": function(model, response) {
console.log("it will not log anything");
},
"error": function(model, response) {
if (response.statusCode === 200) {
console.log("but will log here");
}
}
})
}
});
var settings_view = new SettingsView();
settings_view.saveSettings();
http://jsfiddle.net/ovg3kyqz/7/ - 它不会重现问题,因为我不知道如何设置jsfiidle(如果它甚至可能)在我的工作环境中作出响应。只是为了表明代码工作正常
答案 0 :(得分:1)
应该为空PUT响应调用成功处理程序,我在这里分配了你的jsfiddle: http://jsfiddle.net/tbvw4cbm/
var settingService = Backbone.Model.extend({
"url": "http://www.mocky.io/v2/57d018e41000004c00208c95",
"sync": function(method) {
我使用http://www.mocky.io/和CORS响应头设置端点(所以JSFiddle可以评估它):
但关键是响应体是空的,如果你在jsfiddle中检查ajax请求就可以看到它。