我创建了运行良好的 FormData(),因为我使用 jQuery.ajax 对其进行了测试。但是因为我想要上传进度条,所以当我使用 jQuery.ajax 时我无法创建它。所以我决定直接使用ajax并发布表单数据。但是使用 php 获取表单数据是行不通的。
javascript
xhr.open("POST","assets/php/upload.php?action=uploadFiles");
xhr.setRequestHeader('Cache-Control', 'no-cache');
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
xhr.setRequestHeader('Content-Type', 'multipart/form-data');
xhr.send(newFormData);
php
print_r($_FILES); //output, empty array
这是我的问题,为什么我不能使用 php 获取表单数据?
编辑::
这是我尝试使用 jquery 制作进度条,但效果不佳。进度条将很快完成,文件尚未上传。
function updateProgress(evt)
{
// evt is an ProgressEvent.
if (evt.lengthComputable)
{
var percentLoaded = Math.round((evt.loaded / evt.total) * 100);
// Increase the progress bar length.
$(".progress > div").css(
{
width: percentLoaded + '%'
});
}
}
$.ajax(
{
url: 'assets/php/upload.php?action=uploadFiles',
type: 'POST',
data: newFormData,
cache: false,
xhr: function ()
{
myXhr = $.ajaxSettings.xhr();
if (myXhr.upload)
{
myXhr.upload.addEventListener('progress', updateProgress, false);
}
return myXhr;
},
contentType: false,
processData: false,
});
编辑::
我终于找到了为什么我无法使用 $_FILES 获取 ajax 请求。发生这种情况是因为我设置了内容类型,现在如果我从请求中删除它,我可以获得 ajax 请求。但是现在进度条很快就会完成,而上传文件还没有完成。我的代码哪里出了问题?
谢谢你,阿里雷萨