2012-04-12 30 views
1

Noob question here:骨幹模型保存觸發器Chrome/FF上的錯誤回調

我正在使用ASP.NET MVC 3,我試圖通過Backbone保存一個實體。下面是我有:

我定義我的骨幹模型(計劃)這樣:

var Program = Backbone.Model.extend({ 

    defaults: function() { 
     return { name: "" }; 
    }, 

    initialize: function (attrs) { 
     this.set('name', attrs.name); 
    }, 

    urlRoot: '/program/add' 

}); 

然後我勾了模型上保存按鈕的單擊事件:

$('.add-program').click(function() { 
    var programName = $('.program-name').val(); 
    var program = new Program({ name: programName }); 
    program.save(null, { 
     success: function (model, response) { 
      alert('success'); 
     }, 
     error: function (model, response) { 
      alert('error'); 
     } 
    }); 
}); 

它在IE上工作(令人驚訝!) - ProgramController.Add(字符串名稱)被調用罰款,我得到一個成功的迴應。但是我在Chrome和FF上遇到了問題 - 它們都觸發了錯誤回調,但在Chrome上我的控制器操作甚至沒有受到任何打擊(它在FF上執行)。有趣的是,我的動作斷點確實碰到FF,具有適當的參數值,但仍然得到錯誤回調。

我不確定這裏發生了什麼事。我嘗試通過Firebug/Chromebug進行調試,並且沒有在錯誤回調參數(errorStatus只是...以及「錯誤」!)上看到很多內容。我也試過看網絡選項卡和提琴手,我沒有看到任何鈴聲響起(也許我沒有看到正確的地方)。我也嘗試過直接調用控制器的jquery ajax,並且仍然會出現相同的奇怪行爲。

以防萬一,這裏的MVC行動(雖然我不認爲這個問題是在這裏):

[HttpPost] 
public JsonResult Add(string name) 
{ 
    var stubbedResponse = new {id = Guid.NewGuid()}; 
    return Json(stubbedResponse); 
} 

任何想法可能是造成這個?

+0

而不是警報(「錯誤」)試圖做一個的console.log(響應),看看MVC被髮回。不知道爲什麼IE會以不同的方式處理它,但值得一試。 – clexmond 2012-04-12 02:03:55

+0

沒有運氣。響應對象有一個responseText:「」和statusText:「錯誤」。不確定其他任何屬性是否能爲我提供更好的反饋。 – rtorres 2012-04-12 02:39:11

+0

小提琴http://jsfiddle.net/Uj5Ae/2/與您的客戶代碼似乎是好的。什麼與您的服務器響應?或者Backbone和Underscore版本不匹配? – nikoshr 2012-04-12 08:27:52

回答

1

小提琴http://jsfiddle.net/Uj5Ae/2與您的客戶端代碼似乎是好的。什麼與您的服務器響應?或者Backbone和Underscore版本不匹配?
或者,如果事件傳播未在其他位置處理,則可能是在點擊處理程序結束時返回false。

劇透:這是事件傳播:)