我正在使用 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作为数组的变量显示为字符串。
arr
当我不使用 ajax 作为表单数据发送它但使用简单$.POST选项时,我确实将它作为 PHP 端的数组,但我也无法发送文件。
$.POST
任何解决方案?
你有几个选择:
JS
var json_arr = JSON.stringify(arr);
PHP
$arr = json_decode($_POST['arr']);
通过 发送数组FormData。
FormData
// Use <#> or any other delimiter you want var serial_arr = arr.join("<#>");
$arr = explode("<#>", $_POST['arr']);