【问题标题】:Call success callback on Backbone save request在 Backbone 保存请求上调用成功回调
【发布时间】:2017-01-15 02:56:10
【问题描述】:

我想将骨干模型与服务器同步,并在从服务器接收到成功响应时做一些事情。 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(如果可能的话)以在我的工作环境中做出响应。只是为了表明代码工作正常

【问题讨论】:

    标签: javascript backbone.js


    【解决方案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 可以对其进行评估):

    • 访问控制允许来源:http://fiddle.jshell.net
    • 访问控制允许方法:PUT
    • 访问控制允许标头:内容类型

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

    【讨论】:

      猜你喜欢
      • 2012-07-04
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-19
      • 1970-01-01
      相关资源
      最近更新 更多