对主干保存请求调用成功回调

Call success callback on Backbone save request

本文关键字:调用 成功 回调 请求 保存      更新时间:2023-09-26

我想与服务器同步骨干模型,并在从服务器收到成功响应时做一些事情。发送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/-它不会重现这个问题,因为我不知道如何正确设置jsfilidle(如果可能的话)以响应我的工作环境。只是为了显示代码运行正常

对于一个空的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可以评估它):

  • Access-Control-Allow-Origin: http://fiddle.jshell.net
  • Access-Control-Allow-Methods:把
  • Access-Control-Allow-Headers:内容类型

但关键是响应体是空的,如果你检查jsfiddle中的ajax请求你会看到