我想将creationForm和fileUpload传递给后端。
我尝试使用formData但发送文件时遇到问题。文件大小为0.
var formData = new FormData(document.getElementById('creationForm'));
formData.append("fileUpload", file);
//and then send the file
但我正在尝试使用序列化,但我收到错误500并且它没有到达后端(我放了一个调试断点)。
所有数据都在console.log
上如何将serializeArray转换为普通序列化?
var formData = $('#creationForm').serializeArray();
console.log(file);
formData.push({name: "fileUpload", value: file});
console.log(formData);
$.ajax({
type: 'post',
url: '/upload/testCase',
data: formData,
enctype: 'multipart/form-data',
processData: false,
contentType: false
答案 0 :(得分:0)
在你的创作中,形式包括:
// html
<form id='creationForm' enctype='multipart/form-data'>
在你的ajax中包括:
// ajax
$("#creationForm").on('submit', function(e) {
e.preventDefault();
var form_data = new FormData(this);
$.ajax({
type: 'post',
url: '/upload/testCase',
contentType: false,
cache: false,
processData: false,
data: form_data,
success: function(response) {
alert(response);
}
});
)};
此外,在您的creationForm中,您可以包含一个隐藏类型文本,以便php识别当前的ajax请求。例如:
// in your creationForm
<input type='hidden' id='sendData' name='sendData' value='send'>
php中的上述输入如下:
if(isset($_POST['sendData'])) {
if($_POST['sendData'] == 'send') {
// so here php take the ajax request.
}
}