jQuery Ajax(beforeSend and complete)在FireFox上正常工作,但不能在IE8和Chrome上工作

我在我的MVC应用程序中使用jQuery ajax版本1.4.1(尽管我正在讨论的问题与旧的jQuery版本3.2.1相同),如果用户名已经注册,则在客户注册期间进行检查.当用户单击“检查可用性”按钮时,在检查服务器上的可用性,然后显示消息时,我将显示一个繁忙的图像代替检查按钮(实际上隐藏检查按钮并显示图像).它是一个Sync调用(async:false),我使用beforeSend:并完成:显示和隐藏忙图和检查按钮.这个东西在Firefox上工作得很好,但在IE 8和Chrome中,无论是忙碌的图像还是检查按钮都隐藏,而整个事情都挂起,检查按钮仍然被按下.可用的和不可用的消息显示正确.以下是代码

用户控件中的HTML(ascx):

<div id="available">This Username is Available</div>

div id="not_available">This Username is not available</div>

<input id="txtUsername" name="txtUsername" type="text" size="50" />&nbsp;

<button id="check" name="check" type="button">Check Availability</button>

<img id="busy" src="/Content/Images/busy.gif" />

在此用户控件的顶部,我链接了一个外部的javascript文件,其中包含以下代码

$(document).ready(function() {

    $('img#busy').hide();
    $('div#available').hide();
    $('div#not_available').hide();

    $("button#check").click(function() {
        var available = checkUsername($("input#txtUsername").val());

        if (available == "1") {
            $("div#available").show();
            $("div#not_available").hide();
        }
        else {
            $("div#available").hide();
            $("div#not_available").show();
        }
    });
});


function checkUsername(username) {

    $.ajax({

        type: "POST",url: "/SomeController/SomeAction",data: { "id": username },timeout: 3000,async: false,beforeSend: function() {

            $("button#check").hide();

            $("img#busy").show();

        },complete: function() {

            $("button#check").show();

            $("img#busy").hide();

        },cache: false,success: function(result) {

             return result;

        },error: function(error) {

            $("img#busy").hide();

            $("button#check").show();

            alert("Some problems have occured. Please try again later: " + error);

        }

    });

}

解决方法

我找到了我的问题的答案.实际上是同步调用(async = false),这正在使IE疯狂.我删除了,并调整代码,一切都正常工作.

相关文章

jQuery插件的种类 1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进...
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间。 入门 编写一个jQuery插件开始于给...
最近项目中需要实现3D图片层叠旋转木马切换的效果,于是用到了jquery.roundabout.js。 兼容性如图: ht...
一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异...
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一...