Javascript FormData函数适用于Chrome和Opera,但不适用于Firefox

时间:2013-06-05 00:31:43

标签: javascript jquery forms file jquery-data

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){ }

任何人都有类似的问题,或者有什么问题可以看哪儿?

1 个答案:

答案 0 :(得分:0)

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

我也会在IE或Opera中测试,以确认它是一个特别的FF问题。

还尝试制作提醒

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