【发布时间】:2012-03-04 19:08:38
【问题描述】:
在我正在开发的 Web 应用程序中,我使用 Bootstrap 显示了一个模态对话框。在该对话框中,我有表单元素和一个保存按钮。当用户单击保存时,我会触发一个函数,该函数调用 $.post 来调用 asp.net mvc 操作来保存输入的数据。
当我单击“保存”按钮时,浏览器 (Chrome) 会显示以下消息:
“出乎意料的事情发生了:(.....”。
确认错误消息后,将调用 asp.net 操作,脚本的其余部分正常完成。如果我使用 $.ajax,我也会看到同样的错误。
IE 给出的行为略有不同。在 IE 中看到相同的消息,但在成功回调函数完成后出现。
如果我从模式对话框外部调用保存函数,我看不到此错误消息。
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 调用时,会发生以下情况:
我第一次尝试保存未知的 ajax 异常时,会引发模式关闭。
如果我再次显示模态并尝试保存它工作正常。
如果我知道尝试再次显示模式并保存,我会收到“内部服务器错误”。我的 mvc 动作运行良好。
更新 不知道为什么,但删除模态 div 中的表单标签解决了问题。
谢谢,
兰斯
【问题讨论】:
-
似乎无法获取有关 ajax 错误的信息。 throwedError 参数为空,状态码为 0。我的 asp.net mvc 操作没有抛出任何异常。
-
从模式中移除
标签: jquery modal-dialog twitter-bootstrap