在我開發的Web應用程序中,我使用Bootstrap顯示模態對話框。在那個對話框中,我有表單元素和一個保存按鈕。當用戶點擊保存時,我會觸發一個調用$ .post的函數來調用一個asp.net mvc動作來保存輸入的數據。
的瀏覽器(Chrome)顯示,當我點擊保存按鈕以下消息:
「意想不到的事情發生:(.....」。
確認錯誤信息後asp.net動作被調用,腳本的其餘部分完成,我也看到了同樣的錯誤,如果我使用$ .ajax。
IE給稍微不同的行爲。成功回調函數co mpletes。
如果我從模態對話框外調用保存功能,我沒有看到這個錯誤信息。
function saveUser() {
var userId = $('#userId').val();
var fullName = $('#fullName').val();
var userName = $('#userName').val();
var isAdmin = $('#isAdmin').is(':checked');
var authenticationMode = $('#userAuthenticationMode').val();
$.post(
"@Url.Action("Save", "Account")",
{
userId : userId,
fullName : fullName,
userName : userName,
isAdmin : isAdmin,
authenticationMode : authenticationMode
},
function (data) {
if (data.Success) {
alert("success");
}
else {
alert("failed");
}
}
);
這裏是模態的聲明:
<div id="update_user_modal" class="modal hide">
.
.
.
<div style="float:right">
<button id="SaveUser" class="btn btn-primary">Save changes</button>
</div>
</div>
更新:
找到警報消息的來源。有一個在代碼Ajax錯誤處理程序,其同事沒有提到:
// Set up AJAX error handling ...
$(document).ajaxError(function (event, jqXHR, ajaxSettings, thrownError) {
if (jqXHR.status == 404) {
$("#NotFoundInfoDialog").dialog("open");
} else if (jqXHR.status == 500) {
$("#InternalServerErrorDialog").dialog("open");
} else {
alert("Something unexpected happend :(...");
}
});
我如何能調試Ajax錯誤的任何想法。 jqXHR.status返回0
更新 當我使用$就做一個AJAX調用會發生以下情況:
我第一次嘗試保存一個未知的AJAX引發異常和模態關閉。
如果我再次顯示模式並嘗試保存它工作正常。
如果我知道嘗試再次顯示模式並保存,我會收到'內部服務器錯誤'。我的MVC行動工作正常。
更新 不知道爲什麼,但刪除模態div中的表單標籤解決了問題。
感謝,
蘭斯
似乎無法回到關於ajax錯誤的信息。 thrownError參數爲空,狀態碼爲0.我的asp.net mvc動作沒有拋出任何異常。 – Lance 2012-02-13 11:45:23
從模態中刪除