FormData不附加数据

时间:2016-06-07 08:13:32

标签: javascript

我只是挠头,不明白,这里发生了什么。此代码在生产环境和开发人员环境中都有效。

Here是参考,我做的完全一样。

var fileToUpload = $('#productsFile').prop('files')[0];
var formData = new FormData();
formData.append('file', fileToUpload);
formData.append('action', 'csvUpload');
formData.append('siteId', $('#siteId').val());
console.log($('#siteId').val());
console.log(fileToUpload);
console.log(formData);

控制台中的输出:

10
File { name: "H00447.PriceList.csv", lastModified: 1464960003935, lastModifiedDate: Date 2016-06-03T13:20:03.935Z, size: 14859917, type: "application/vnd.ms-excel" }
FormData {  }

对象已创建,值很好,那么这里可能出现什么问题?使用Firefox Developer Edition进行测试。

修改

以下是将数据发送到ajax的代码:

$.ajax({
    url: ajaxUrl, // point to server-side PHP script 
    dataType: 'text', // what to expect back from the PHP script, if anything
    cache: false,
    contentType: false,
    processData: false,
    data: formData,
    type: 'post'
}).done(function (msg) {
    if (parseInt(msg) !== 0) {
        alert(msg);
    } else {
        location.reload();
    }
}).fail(function (msg) {
    alert('Error: ' + msg.statusText);
});

ajax.php我只是var_dump($_REQUEST);并向我显示一个空数组。

EDIT2

我在另一个localhost环境中尝试过,我只是添加了一些随机键和值,一切都很好,即使在FF和Chrome中也是如此。

所以我回到了这个问题,并且只是评论了fileToUpload部分。

另外两个值在$_POST。如果我添加文件,$_POST将为空。

文件有问题。

EDIT3

不,我只是用一个小文件测试它,大约3-4Kb,一切都很好。我的生产文件是14Mb,我认为这将是问题所在。

这整个因为文件大小。我在php.ini和中提琴中包含了帖子限制和最大文件大小。事情很有效。谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

尝试此操作来记录键和值:

formData.forEach(function (value, key) {
  console.log(key, value);
});

答案 1 :(得分:0)

数据已发送,但您需要使用POST而不是GET:

var formData = new FormData();
formData.append('action', 'csvUpload');
var xhr = new XMLHttpRequest();
xhr.open("POST", "ajax.php", true);
xhr.send(formData);