2016-09-07 14 views
0

サーバーからバックボーンモデルを同期し、サーバーから正常な応答を受け取ったときに何らかの処理を行いたいとします。 PUT要求は送信であり、応答statusCodeは200ですが応答本体は空です。成功コールバックは、応答が空でない場合にのみ呼び出されます。バックエンドチームは私に何の応答も送らないでしょう。そこで、エラーコールバック内のステータスコードをチェックするよりも優れた解決策があります。もっと "正しい"? - 私は私の仕事のenvのように応答するcorretcly(そのさえ可能ならば)どのようにセットアップjsfiidleに知っていないとして、それが問題を再現しませんバックボーン保存要求で成功コールバックを呼び出す

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/:ここでは、コードです。ただ、コードが正しく

答えて

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レスポンスヘッダ(SO JSFiddle、それを評価することができる):

  • アクセス制御 - 許可起源:http://fiddle.jshell.net
  • アクセス制御-A LLOW-方法:
  • PUTアクセス制御を許ヘッダー:Content-Typeの

しかし、重要な点は、あなたがjsfiddleでAJAXリクエストを検査した場合、あなたがいることを見ることができ、レスポンスボディが空であることです。

関連する問題