我只是挠头,不明白,这里发生了什么。此代码在生产环境和开发人员环境中都有效。
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
和中提琴中包含了帖子限制和最大文件大小。事情很有效。谢谢你的帮助。
答案 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);