Javascript $.ajaxSetup({async:false})在IE中不工作
为了实现ajax文件上传,我使用以下代码,在Firefox中运行良好,但在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(
$.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。