SerializeArray to Serialize

时间:2018-03-08 12:50:45

标签: javascript jquery

我想将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

1 个答案:

答案 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.
}
}