Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript $.ajaxSetup({async:false})在IE中不工作_Javascript_Jquery_Ajax_Internet Explorer - Fatal编程技术网

Javascript $.ajaxSetup({async:false})在IE中不工作

Javascript $.ajaxSetup({async:false})在IE中不工作,javascript,jquery,ajax,internet-explorer,Javascript,Jquery,Ajax,Internet Explorer,为了实现ajax文件上传,我使用以下代码,在Firefox中运行良好,但在IE中失败。我需要同步操作;为此,我使用了: $.ajaxSetup({ async: false }); //file upload code in ajax call for ( i = 0; i < fileCnt; i++ ) { if ( $('#addFile' + i ).length > 0 ) { $.ajaxSetup(

为了实现ajax文件上传,我使用以下代码,在Firefox中运行良好,但在IE中失败。我需要同步操作;为此,我使用了:

$.ajaxSetup({ async: false });
//file upload code in ajax call

for ( i = 0; i < fileCnt; i++ ) {                       
    if ( $('#addFile' + i ).length > 0 ) {
        $.ajaxSetup({ async: false });
        $('#addFile'+i).ajaxForm( options );
        $('#addFile'+i).submit();
        console.log( files );
    }
}
$.ajaxSetup({async:false});
//ajax调用中的文件上传代码
对于(i=0;i0){
$.ajaxSetup({async:false});
$('#addFile'+i).ajaxForm(选项);
$('#addFile'+i).submit();
console.log(文件);
}
}
使用setTimeout修改代码

for(i=0;i<fileCnt;i++){                     
 if ($('#addFile'+i).length > 0) {
                      $('#addFile'+i).ajaxForm(options);
                    $('#addFile'+i).submit();
                    window.setTimeout($('#addFile'+(i+1)).bind($('#addFile'+(i+1))), 0.1);
                    console.log(files);             
                }
            }
(i=0;i 0)的
{
$('#addFile'+i).ajaxForm(选项);
$('#addFile'+i).submit();
setTimeout($('#addFile'+(i+1)).bind($('#addFile'+(i+1))),0.1);
console.log(文件);
}
}
我的控制台在Firefox中显示文件信息,但在IE中没有显示

请帮帮我。

插件使用Iframe而不是ajax上传文件。
因此,使用async参数是无用的

使用asynchronous:false确实会锁定IE中的UI(以及一些 其他浏览器)。在这种情况下,即使您已经告诉它显示 图像,它可能还没有时间真正做到这一点(浏览器) 通常在UI锁定之前(因为 同步呼叫

最好的答案可能不是使用同步呼叫,而是 使用iframe垫片或其他东西制作页面上的所有内容 呼叫正在进行时不可接通。同步呼叫锁 IE过程中所有与UI相关的内容,不仅仅是你的页面, 而iframe垫片只会使页面不可读(并提供 给你一个机会,让你把事情表现得有点黯淡或什么的)。 这也很容易

setTimeout call (directly, or via one of Prototype's useful wrappers 
like Function#defer and Function#delay; Function#defer is just 
Function#delay with a 0.1 delay time)

您不应该在ajax中使用同步请求。如果您认为需要,那么您可能做错了。您需要添加更多详细信息。它使用Iframe。我的要求是在上载文件后,我正在尝试将保存的文件id获取到全局声明的文件[],通过使用它,我执行了另一个操作,我用上面的方法实现了setTimeout,我得到了错误脚本438:对象不支持属性或方法“push”jquery-1_7.js,第3008行字符5,似乎包含了两次jquery。