我正面临一个奇怪的问题……我有一个包含多个字段的表单..在表单提交上,我将多个图像文件附加到表单数据中并像这样提交:
$('#newEntry').on('submit', function(e){
e.preventDefault();
const formData = new FormData(e.target);
formData.delete('images[]');
for (var i = 0; i < filesToUpload.length; i++) {
formData.append('images[]', filesToUpload[i].file, filesToUpload[i].file.name);
}
$(this)[0].submit();
});
当我尝试在Laravel服务器上使用echo(count($request->images))
时,它会回显0
..并在dd($request)
上显示..我看到了空文件数组
但是当我直接从input
字段提交具有相同文件的相同表单而不是像这样向其附加数据时:
<input type="file" name="images[]">
我在服务器上收到所有文件。
文件已成功附加到formData
上。.我已经通过以下方式进行了检查:
var formKeys = formData.keys();
var formEntries = formData.entries();
do {
console.log(formEntries.next().value);
} while (!formKeys.next().done)
我还尝试过通过AJAX
发送相同的附加文件,并且效果很好:
$('#newEntry').on('submit', function(e){
e.preventDefault();
const formData = new FormData(e.target);
formData.delete('images[]');
for (var i = 0; i < filesToUpload.length; i++) {
formData.append('images[]', filesToUpload[i].file, filesToUpload[i].file.name);
}
$.ajax({
url: actionURL,
data: formData,
processData: false,
contentType: false,
type: "POST",
success: function (data) {
alert("DONE");
},
error: function (data) {
alert("ERROR - " + data.responseText);
}
});
});
深入研究..我发现,当我通过Http提交表单时,控制台中会出现一则代码为500 Internal Server Error的错误(仅在页面重新加载之前)
尝试了所有内容,但不知道是什么原因导致了这种奇怪的行为..请帮助我解决问题
答案 0 :(得分:0)
您可以检查浏览器的network
标签(最好是Chrome
),以比较发送到服务器的请求参数。
如果请求太快而无法捕获,请尝试将debugger;
(或在“源”选项卡中的代码行的前面单击)放入Javascript代码以停止执行重新加载之前的代码。然后,您可以检查Javascript的当前状态以及收到的500
响应。