2016-09-07 55 views
0

我想與服務器同步主幹模型,並在從服務器接收到成功響應時執行一些操作。發送PUT請求並且響應statusCode爲200,但響應正文爲空。成功回調僅在響應不爲空時纔會被調用。後端團隊不會給我任何迴應。那麼是否有比檢查錯誤回調中的狀態碼更好的解決方案?更「正確」?下面是代碼:Backbone保存請求中的呼叫成功回調

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 corretcly(如果它甚至有可能),爲我的工作ENV迴應。只是爲了表明代碼是否工作正常

回答

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
  • 訪問控制-A llow的方法:PUT
  • 訪問控制允許報頭:Content-Type的

但關鍵的一點是,響應主體是空的,如果檢查中的jsfiddle Ajax請求,你可以看到, 。