从引导模式调用jquery$.post时出错
在我正在开发的web应用程序中,我使用引导显示一个模式对话框。在这个对话框中,我有表单元素和一个保存按钮。当用户单击“保存”时,我将启动一个函数,该函数调用$.post以调用asp.net mvc操作来保存输入的数据 单击“保存”按钮时,浏览器(Chrome)显示以下消息: “发生了意想不到的事:(……)” 确认错误消息后,将调用asp.net操作,脚本的其余部分将正常完成。如果使用$.ajax,我也会看到相同的错误 IE给出的行为稍有不同。我在IE中看到相同的消息,但它在成功回调函数完成后出现 如果从模式对话框外部调用save函数,则不会看到此错误消息从引导模式调用jquery$.post时出错,jquery,modal-dialog,twitter-bootstrap,Jquery,Modal Dialog,Twitter Bootstrap,在我正在开发的web应用程序中,我使用引导显示一个模式对话框。在这个对话框中,我有表单元素和一个保存按钮。当用户单击“保存”时,我将启动一个函数,该函数调用$.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错误的任何想法。jqXHR.status返回0
更新
当我使用$.ajax进行ajax调用时,会发生以下情况:我第一次尝试保存未知ajax时,会引发异常,并且模式关闭。
如果我再次显示模式并尝试保存它,则效果良好。
如果我知道再次尝试显示模式并保存,我会得到一个“内部服务器错误”。我的mvc操作正常 更新 不知道为什么,但是删除modal div中的表单标签就解决了这个问题 谢谢
Lance您以错误的方式绑定了
ajaxError
,如果状态不是404或500,则它总是转到显示错误“意外事件”的else块,因此请更改它
$(document).ajaxError(function (event, jqXHR, ajaxSettings, thrownError) {
if (jqXHR.status != 200){
if (jqXHR.status == 404) {
$("#NotFoundInfoDialog").dialog("open");
} else if (jqXHR.status == 500) {
$("#InternalServerErrorDialog").dialog("open");
} else{
alert("Something unexpected happend :( ...");
}
}
});
在我的模式中有标记。这是导致问题的原因。不知道为什么。我将在twitter引导用户列表中发布问题。似乎无法获得有关ajax错误的信息。thrownError参数为空,状态代码为0。我的asp.net mvc操作没有引发任何异常。从模式中删除元素将重新启动解决了问题…只有当我没有获得成功状态代码200时,才会执行代码部分,因此逻辑是正确的。它正在检查将处理的两种状态代码类型,如果是其他类型的代码,只会抛出警报。
$(document).ajaxError(function (event, jqXHR, ajaxSettings, thrownError) {
if (jqXHR.status != 200){
if (jqXHR.status == 404) {
$("#NotFoundInfoDialog").dialog("open");
} else if (jqXHR.status == 500) {
$("#InternalServerErrorDialog").dialog("open");
} else{
alert("Something unexpected happend :( ...");
}
}
});