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

该代码适用于 Chromium 26,但不适用于 Firefox 21。我在每个循环中放置了一个警报,“alert(this.name)”,它在 Chrome 中显示文件名,但在 Firefox 中没有任何内容......所以这显然是它所有的地方在 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){ }

任何人都有任何类似的问题,或者有任何暗示甚至可以在哪里看?

4

1 回答 1

0

您的浏览器控制台中是否有错误?还要检查网络(或网络)选项卡。

我也会在 IE 或 Opera 中进行测试,以确认这是一个 FF 问题。

也尝试产生警报

if (!window.FormData) {
    alert('Doh!');
}
于 2013-06-05T00:39:57.533 回答