编程语言
首页 > 编程语言> > javascript – 将数组附加到FormData并通过AJAX发送

javascript – 将数组附加到FormData并通过AJAX发送

作者:互联网

我正在使用ajax提交包含数组,文本字段和文件的多部分表单.

我将每个VAR附加到主数据上

var attachments = document.getElementById('files'); 
var data= new FormData();

for (i=0; i< attachments.files.length; i++){
    data.append('file', attachments.files[i]);
    console.log(attachments.files[i]);

    data.append ('headline', headline);
    data.append ('article', article);
    data.append ('arr', arr);
    data.append ('tag', tag);

然后我使用ajax函数将其发送到PHP文件以存储在sql DB中.

$.ajax({    
    type: "post",
    url: 'php/submittionform.php',
    cache: false,
    processData: false,
    contentType: false,
    data: data,
    success: function(request) {$('#box').html(request); }
})

但在PHP方面,arr变量(数组)显示为字符串.

当我不使用ajax作为Form数据发送它但使用简单的$.POST选项时,我确实将它作为PHP端的数组,但是我也无法发送文件.

任何解决方案

解决方法:

你有几个选择:

将其转换为JSON字符串,然后在PHP中解析(推荐)

JS

var json_arr = JSON.stringify(arr);

PHP

$arr = json_decode($_POST['arr']);

或者使用@Curios’s method

通过FormData发送数组.

不推荐:使用PHP序列化数据,然后在PHP中反序列化

JS

// Use <#> or any other delimiter you want
var serial_arr = arr.join("<#>"); 

PHP

$arr = explode("<#>", $_POST['arr']);

标签:javascript,arrays,ajax,form-data
来源: https://codeday.me/bug/20190918/1810620.html