2011-05-05 77 views
1

爲什麼我總是有這麼多麻煩......?因爲我沒有在我的other article解決這個問題,我決定的JavaScript只是代碼的正確性入值...所以我有:Ajax.BeginForm的回調不起作用

OnSuccess="alert('ok')", 
OnFailure="alert('failed')", 

所以我的問題是,提交工作正常;一條記錄被插入數據庫,我得到一個回調......但我得到了錯誤的回調!即使插入記錄,我也會失敗。 heeeeelp!

回答

0

好吧,我想通了幾件事情:

  1. onFailure處=「的HandleError」是要做到這一點(見另一篇文章我對決議中提到)
  2. ajaxContext沒有一個正確的方法get_response()方法,因爲我實際上是將函數連接到OnComplete事件(我的壞)!一旦連接到OnSuccess,我得到我的控制器的方法Json本地返回值
  3. 我得到了當數據庫條目失敗時調用的OnSuccess處理程序。這是因爲我的控制器方法是try {} catch {} ing,因此永遠不會失敗!我被dopey :(
2

您應該能夠從響應讀取數據弄清楚爲什麼它被認爲是一個失敗:

OnFailure="handleError", 

...

function handleError(ajaxContext) { 
    var response = ajaxContext.get_response(); 
    var statusCode = response.get_statusCode(); 
    alert("Sorry, the request failed with status code " + statusCode); 
} 

或者,使用Fiddler並查看響應。確保狀態碼,內容類型和內容完全符合預期。

+0

1.我不明白爲什麼OnFailure是一個函數調用,而不是一個函數名稱......我認爲它應該是OnFailure =「handleError」? 2. ajaxContent doesn似乎沒有包含get_response()方法......它包含一個responseText,它是我的控制器方法返回的對象的字符串表示形式(我不能解引用),它還包含失敗,完成,完成,成功和錯誤,所有這些都是返回對象本身的方法... 我正在使用來自Microsoft CDN的jquery.unobtrusive-ajax.min.js庫的最新版本,因此可能是什麼問題? – ekkis 2011-05-06 07:10:28

+0

我的壞,我複製/粘貼。修正它 - 應該是一個函數名(我相信)。用Fiddler檢查內容/內容類型/狀態代碼以確保它看起來都是相似的克拉。 – 2011-05-06 12:12:49