小编典典

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

all

我正在使用 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 作为表单数据发送它但使用简单$.POST选项时,我确实将它作为 PHP 端的数组,但我也无法发送文件。

任何解决方案?


阅读 112

收藏
2022-09-02

共1个答案

小编典典

你有几个选择:

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

JS

var json_arr = JSON.stringify(arr);

PHP

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

或者使用[@Curios 的方法

通过 发送数组FormData


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

JS

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

PHP

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