当前位置: 首页 > 知识库问答 >
问题:

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

常波鸿
2023-03-14

我正在使用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端将它作为一个数组来获取,但这样我就不能同时发送文件。

有什么解决办法吗?

共有2个答案

胡鸿志
2023-03-14

您还可以通过formdata发送数组,方法如下:

var formData = new FormData;
var arr = ['this', 'is', 'an', 'array'];
for (var i = 0; i < arr.length; i++) {
    formData.append('arr[]', arr[i]);
}

因此您可以使用简单HTML表单编写arr[]。在PHP的情况下,它应该可以工作。

您可能会发现本文很有用:如何在查询字符串内传递数组?

佟和安
2023-03-14

您有几个选项:

JS

var json_arr = JSON.stringify(arr);

PHP

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

通过formdata发送数组

JS

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

PHP

$arr = explode("<#>", $_POST['arr']);
 类似资料:
  • 问题内容: 我正在使用ajax提交包含数组,文本字段和文件的多部分表单。 我将每个VAR附加到主数据中 然后我使用ajax函数将其发送到PHP文件以存储在sql DB中。 但是在PHP方面,变量(即数组)显示为字符串。 当我不使用ajax作为表单数据发送它,而是使用简单的选项时,确实在PHP端将它作为数组获得,但是后来我也无法发送文件。 有什么办法吗? 问题答案: 您有几种选择: 将其转换为JSO

  • 是这种格式,在后端,我只在请求中获得格式。我还需要发送“original_file_name”和“function_name”属性。当然,我可以将数组分成3个部分并分别追加它们,但是有没有办法将每个mediasData数组索引的所有there属性发送到formdata数组各自的索引中?

  • 问题内容: 我想发送一个用JavaScript构造的数组,其中包含多个select的选定值。有没有一种方法可以使用ajax将此数组发送到php脚本? 问题答案: 您可以使用XML或JSON发回到服务器。您的javascript将必须构造该帖子,在XML的情况下,则需要您在javascript中创建它。JSON不仅轻巧,而且更易于在javascript中制作。签出JSON- PHP 来解析JSON。

  • 问题内容: 我设法发送了一个FormData对象,如下所示: 现在,我要做的是添加一个附加值以发送到服务器。以下内容无效: 我还尝试了以下变体: 任何帮助表示赞赏。 问题答案: 尝试:

  • 问题内容: 我该如何发布文件并输入字符串数据?例如,我还有许多其他 隐藏的输入数据 ,需要将它们发送到服务器, html, 使用下面的这段代码,我仅设法发送文件数据 ,而不 发送隐藏的输入数据。 jQuery, server.php 结果, 我希望得到这个结果, 可能吗? 问题答案: 添加了一个循环,并在中将更改为,以供对象引用附加到。

  • 问题内容: 我的问题是我有一个大型画廊,不应在第一页加载时完全加载。因此,我加载了50张图像中的10张,并向其中添加了fancybox。当用户单击下一步按钮时,第11张图像应通过Ajax加载并附加到图库容器中。 问题是fancybox停止在第10张图片,因为它不知道动态加载的图片。 如何将动态加载的图像添加到fancybox2? 目前我有这个: 获取下一张图片:) 之后,我调用loadFancyb