2013-06-05 164 views
0
var data = new FormData(document.getElementById("uploadform")); 
$.each($('#file')[0].files, function(i, file) { 
data.append('file-'+i, file, this.name);      
}); 

該代碼適用於Chromium 26,在Chrome中,但沒有在Firefox ...所以這顯然是它在Firefox中陷入困境的地方。Javascript FormData函數適用於Chrome和Opera但不適用於Firefox

我也在Firefox 24上試過它 - 同樣的問題。我知道用在Firefox上運行的代碼 - 一箇舊版本比21

這細微的變化,只是留下過幾個參數,使我有同樣的結果:

var data = new FormData(); 
$.each($('#file')[0].files, function(i, file) { 
data.append('file-'+i, file);     
}); 

我只是不知道這是怎麼回事,因爲Mozilla文檔顯示,這是支持的,我做的是正確的。

下面的代碼的Ajax調用部分,如果有人好奇,(但這不是問題 - 它的市場影響了按我的警報檢查上面的代碼):

$.ajax({ 
url: 'upload.php', 
data: data, 
contentType: false, 
processData: false, 
cache: false, 
type: 'POST', 
success: function(data){ } 

任何人有任何類似的問題,或者有什麼可以看到的地方?

回答

0

瀏覽器控制檯中是否有錯誤?檢查網絡(或網絡)標籤。

我會在IE或Opera中進行測試,以確認它是否是一個FF問題。

也可以嘗試產生警示訊號

if (!window.FormData) { 
    alert('Doh!'); 
} 
+0

我嘗試了上述警告。它沒有在Chromium或Firefox中出現。我只在舊筆記本電腦上安裝了IE 9而不是10.從我所瞭解的FormData在IE 9或更低版本中不支持。當「upload.php」需要讀取已經上傳的文件時,唯一的控制檯錯誤 - 錯誤是由於之前已經使用Chromium上載的每個文件上的「損壞或截斷文件」的結果。我會下載歌劇,看看它會發生什麼。我曾經擁有它,直到我在我的主筆記本電腦上重新安裝debian。 –

+0

我剛剛在Opera中試過,它的工作原理。所以它適用於Chromium和Opera,而不是Firefox。 (在我的本地LAMP設置和Linode.com上的遠程LAMP上的結果是一樣的......以防萬一有人想知道服務器或任何東西)。任何人都知道Firefox最近是否有任何變化,因爲我知道我的腳本幾個月前曾在Firefox中工作過。謝謝你的幫助。 –

+0

我剛剛在Debian上嘗試Iceweasel(Firefox 10),並且遇到與Firefox 21和Firefox 24相同的問題 - 不起作用。我可以發誓,這些文件腳本用於在Firefox中工作。我不知道。 –

相關問題