2013-10-11 34 views
-2

要實現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); 
    } 
} 

修改代碼的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);    
       } 
      } 

我的控制檯顯示了Firefox中的文件信息,但它不是在IE瀏覽器中。

請幫幫我。

+7

您不應該使用帶有ajax的同步請求。如果你認爲你需要,你可能做錯了。 –

+0

+1!不要這樣做! –

+0

你需要添加**多**更多詳細信息 – Liam

回答

1

ajaxForm插件不使用iframe而是使用ajax進行文件上傳。
因此,使用async參數也沒用

+0

Yah它是使用Iframe我的要求是上傳文件後,我試圖通過使用這個我執行的另一個動作 – user2590163

0

使用異步:假真的鎖定了IE中的UI(和一些 其他瀏覽器)。在這種情況下,即使您告訴它顯示 圖像,但由於同步呼叫的原因,在UI鎖定之前可能沒有時間實際執行此操作(瀏覽器 通常將這些內容排隊)。

最好的答案可能是不使用同步調用,而是 使用的iframe墊片或一件讓一切 頁面無法點擊上,而呼叫正在進行。同步呼叫鎖 所有內容在該IE瀏覽器進程中與用戶界面相關的問題,而不僅僅是您的頁面,而是一個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) 
+0

保存的文件ID到全局聲明文件[]中我以上述方式實現了setTimeout我得到這個錯誤SCRIPT438:對象不支持屬性或方法'推' jquery-1_7.js,行3008字符5 – user2590163

+0

似乎,你包括jQuery兩次。 –