在我开发的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
从模态中删除