我想将主干模型与服务器同步,并在从服务器收到成功响应时执行一些操作。 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 (如果可能的话)以在我的工作环境中做出响应。只是为了表明代码可以正常工作
最佳答案
应该为空的 PUT 响应调用成功处理程序,我在这里 fork 了你的 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 响应 header (以便 JSFiddle 可以评估它):
- 访问控制允许来源:http://fiddle.jshell.net
- 访问控制允许方法:PUT
- 访问控制允许 header :内容类型
但关键是响应正文是空的,如果您检查 jsfiddle 中的 ajax 请求,您可以看到这一点。
关于javascript - 对 Backbone 保存请求调用成功回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39369522/