从引导模式调用jquery$.post时出错

从引导模式调用jquery$.post时出错,jquery,modal-dialog,twitter-bootstrap,Jquery,Modal Dialog,Twitter Bootstrap,在我正在开发的web应用程序中,我使用引导显示一个模式对话框。在这个对话框中,我有表单元素和一个保存按钮。当用户单击“保存”时,我将启动一个函数,该函数调用$.post以调用asp.net mvc操作来保存输入的数据 单击“保存”按钮时,浏览器(Chrome)显示以下消息: “发生了意想不到的事:(……)” 确认错误消息后,将调用asp.net操作,脚本的其余部分将正常完成。如果使用$.ajax,我也会看到相同的错误 IE给出的行为稍有不同。我在IE中看到相同的消息,但它在成功回调函数完成后出现

在我正在开发的web应用程序中,我使用引导显示一个模式对话框。在这个对话框中,我有表单元素和一个保存按钮。当用户单击“保存”时,我将启动一个函数,该函数调用$.post以调用asp.net mvc操作来保存输入的数据

单击“保存”按钮时,浏览器(Chrome)显示以下消息:

“发生了意想不到的事:(……)”

确认错误消息后,将调用asp.net操作,脚本的其余部分将正常完成。如果使用$.ajax,我也会看到相同的错误

IE给出的行为稍有不同。我在IE中看到相同的消息,但它在成功回调函数完成后出现

如果从模式对话框外部调用save函数,则不会看到此错误消息

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 :( ...");
   }
 }
});