<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script type="text/javascript" src="js/jquery-1.44.min.js"></script>
</head>
<body>
    <div id="divLoading" style="display: none;">
        正在加载中...</div>
</body>
</html>
<script type="text/javascript">
    function AjaxData() {
        $.ajax(
        {
            cache: false,
            async: false,
            url: "TestAjax.aspx",
            beforeSend: function () {
                $("#divLoading").show();
            },
            success: function (result) {
                $("#divLoading").hide();
                alert(result);
            }
        });
    }
    setTimeout("AjaxData();", 2000);
</script>
//让TestAjax页面花费5秒时间,以让前台得出AJAX提交效果
    public partial class TestAjax : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            System.Threading.Thread.Sleep(5000);
        }
    }以上代码,在FireFox中,当执行AJAX的时候能正常显示出divLonding状态
但是在IE中,则不会显示
然后我试着把Ajax的async: false改为async: true(将同步改为异步)
IE也可以正常显示divLonding状态但我项目有些地方是要用同步的方式,又如何实现在BeforSend的时候显示出我的londing状态呢?谢谢

解决方案 »

  1.   

    问题和:http://www.39g.com/html/271/275/2010/09/026534823806.htm
    这个相当
    谢谢
    如何解决
      

  2.   

    可以看看这里的方法http://stackoverflow.com/questions/4971062/jquery-ajax-synchronous-call-beforesend
      

  3.   

    把  beforeSend: function () {去掉!然后把$("#divLoading").show();放到$.ajax只前,函数之内执行是否可以呢?等成功后,再统一关闭处理!
      

  4.   

    把 beforeSend: function () {去掉!然后把$("#divLoading").show();放到$.ajax只前,函数之内执行是否可以呢?等成功后,再统一关闭处理!
    -----------
    我后来也想是这样
    但还是不行
    所以我就不理解IE了,我都还没开始AJAX他就已经假死
    但是在显示和AJAX中间加上alert就可以正常显示
    实在不理解IE
      

  5.   

    我用AJAX前用
    setTimeout("$('#divLoading').followDiv('50px');$('#divLoading').show();",1);
    也不行。。他只会在IE AJAX后才执行
      

  6.   

    给你个我写的/**
     * 用法试例:
     * var obj = new myAjax();
     * obj.send(url, "post", data, false, function(data){});
     * -
     * args_1 | 提交路径
     * args_2 | 提交方式(get、post)
     * args_3 | 提交数据(数组)
     * args_4 | 是否同步(true-异步[默认],false-同步)
     * args_5 | 回调函数
     */
    var myAjax = function(){
    var me  = this;
    this.args  = arguments;
    this.execCallBack = ""; this.createxmlHttpRequest = function(){
    if(!me.request){
    if(window.XMLHttpRequest){
    return new XMLHttpRequest();
    }else{
    return new ActiveXObject("Microsoft.XMLHTTP");
    }
    }
    } this.send = function(){
    me.request = me.createxmlHttpRequest();
    var send = "";
    for(var item in arguments[2]){
    send += "&" + item + "=" + arguments[2][item];
    } if(arguments[1].toLowerCase() == "post"){
    url = arguments[0];
    }else{
    url = arguments[0]  + send
    send = null;
    } me.request.open(arguments[1].toLowerCase(), url, arguments[3]);
    me.execCallBack = arguments[4];
    if(navigator.userAgent.indexOf("Firefox") <= 0 && !arguments[3]) {
    me.request.onreadystatechange = me.callback;
    }
    me.request.setRequestHeader("content-type", "application/x-www-form-urlencoded");
    me.request.send(send);
    if(!(navigator.userAgent.indexOf("Firefox") <= 0 && !arguments[3])) {
    if(arguments[3]){
    me.request.onreadystatechange = me.callback;
    }else{
    me.request.onreadystatechange = me.callback();
    }
    }
    } this.callback = function(){
    if (me.request.readyState == 4 && me.request.status == 200){
    new me.execCallBack(me.request.responseText);
    }
    }
    }