在jquery中使用Ajax时,beforeSend在Internet Explorer中不起作用

问题描述

| 我试图在生成内容之前在div上添加加载的gif图像。它在Firefox中工作正常,但在Internet Explorer中不起作用。下面是我的代码 谢谢堆
<script type=\"text/javascript\">
j(document).ready(function() {

    j(\'#sliderform\').submit(function() {
    //j(\'#dash1\').html(\'loading....\');

    bodyContent = j.ajax({

        beforeSend: function(){
            $(\"#dash1\").append(\'abhinab...\');
            //alert(\"loading,..\");
            j(\'#dash\').html(\'loading....\');
            j(\'#dash\').html(\'<img src=\"../resources/images/loading.gif\" >\');
    //document.getElementById(\'loading\').innerHTML = \'<img src=\"../resources/images/loading.gif\" >\';
        //  document.getElementById(\'dash\').innerHTML = \'<img src=\"../resources/images/loading.gif\" >\';         
           },url: \"dashboardreload.PHP\",global: true,type: \"POST\",data: ({min : j(\"#min\").val(),max : j(\"#max\").val()}),dataType: \"html\",async:false,success: function(msg){
             // drawChart();

          }
       }
    ).responseText;
    //j(\'#dialog-form\').html(\'\');
    //j( \"#dialog-form\" ).dialog( \"close\" );
    //document.getElementById(\'dash\').innerHTML = \'<img src=\"../resources/images/loading.gif\" >\';
    j(\'#dash\').html(bodyContent);

    drawChart();

    //confirm(bodyContent);
    return false;
    });
});
</script>
    

解决方法

        尝试在每个变量之前添加\“ var \”:
var bodyContent = j.ajax({....
    ,        好的,我们等着瞧。 @ArtoAle的回复很恰当:不要使用全局变量。 真正要注意的是,您正在对ajax进行同步调用(
async
属性是
false
)。这将阻止UI线程在JavaScript上运行,直到返回数据后恢复它。也许在IE中,UI线程被阻止时不会呈现对DOM的更改,但是在Firefox中会显示吗? Dunno,但我当然可以使该呼叫成为异步呼叫。 如果完成,,4ѭ将按照您使用IE8和jQuery 1.6.1的描述为我工作。