2014-02-23 58 views
4

我正在使用Backbone開展我的第一個重大項目。骨幹保存:「成功」沒有被調用

register: function(){ 
    this.model.save({ 
     email: $('#email').val(), 
     password: $('#passwd').val() 
    },{ 
     success: function(model, response){ 
      console.log("Registration succeeded, congrats!"); 
      window.location.hash = ''; 
     }, 
     error: function(model, response){ 
      console.log("Registration failed, reason = " 
       + response.responseText 
       + " (status "+response.status+")"); 
     } 
    }); 
    return false; 
} 

但是,每當我運行它,只有error回調函數被調用:我如下得到了與一種稱爲SignUpView骨幹視圖。這導致了奇怪的行爲,如控制檯日誌

Registration failed, reason = Registration succeeded (status 200) 

(「註冊成功」從註冊成功後,服務器發回,否則它會說:「缺少參數‘密碼’」或「無效的電子郵件格式」或相似)

我知道我可以簡單地在錯誤塊中捕獲200狀態碼,但是我不喜歡這樣的事實,那就是我必須在標記爲「錯誤」的函數中處理成功的帖子。我知道這可能是非常簡單和愚蠢的事情,但我無法找到問題所在。

+0

嘗試在成功之前刪除「},{」 – user1716672

+0

因爲'model.save'需要兩個參數:一個包含要更新的字段,另一個包含回調。 –

回答

5

根據this issue,問題是無效的JSON也被認爲是錯誤。如果服務器返回無效的JSON(如Registration succeeded),那麼這將在錯誤處理程序中處理。

我改變了我的服務器響應是

{"ok":"Registration succeeded"} 

和一切開始工作正常。

+0

剛注意到這個障礙,並且同時投擲了一些發誓的話Backbone的方式。 – ecbrodie