如何通过 AJAX 将 jquery 对象数据发送到 php?

Posted

技术标签:

【中文标题】如何通过 AJAX 将 jquery 对象数据发送到 php?【英文标题】:How to send jquery object data through AJAX to php? 【发布时间】:2021-12-31 09:29:04 【问题描述】:

我正在使用Repeater JS,它使用repeaterVal() 函数从嵌套的repeater 表单中获取所有输入字段值,并提供如下对象:

所以,我创建了一个变量 var formData = jQuery('.repeater').repeaterVal() 并将 formData 传递给 AJAX 的数据,如下所示:


<?php $dir = plugin_dir_url( __FILE__ ) . "formdata.php"; ?>

<script>
var form = "<?php echo $dir ?>";

$.ajax(
    method: "POST",
    url: form,
    data: formData,
    success: function (data) 
        console.log("Form is submitted");
    ,
    error: function (jqXHR, exception) 
        console.log(jqXHR);
    
);
</script>

然后在 formdata.php 文件中,我尝试像这样回显那些对象值:

<?php 
$a = $_GET;
if(!$a)
    echo "Array is empty";

else
    print_r(array_keys($a));

?>

而且 AJAX 数据总是发送一个空对象,我不知道为什么以及在哪里做错了。但是在 PHP 文件中,当我尝试回显对象数据时,它显示它是一个空数组。 我尝试在 AJAX 中将 dataType 添加为 JSON,但 AJAX 总是返回错误消息而不是成功。

我的目标是以对象形式发送表单数据,然后在 PHP 文件中发送,我想获取所有这些对象数据,然后将它们插入 mysql 数据库。

那么,让我知道这怎么可能?

【问题讨论】:

【参考方案1】:

您忘记初始化 formData 变量。由于您想传递一个对象,请使用JSON.stringify()

这样做

<?php $dir = plugin_dir_url( __FILE__ ) . "formdata.php"; ?>

<script>
var form = "<?php echo $dir ?>";
var formData1 = $('.repeater').repeaterVal();
var formData = new FormData();

formData.append('data',JSON.stringig(formData1));

$.ajax(
    method: "POST",
    url: form,
    data: formData,
    processData: false,
    contentType: false,
    success: function (data) 
        console.log(data);
        console.log("Form is submitted");
    ,
    error: function (jqXHR, exception) 
        console.log(jqXHR);
    
);
</script>

processData 设置为 false 将阻止 jQuery 自动将数据转换为查询字符串。另外不要忘记将contentType 设置为false。

【讨论】:

谢谢,伙计!它奏效了。 很高兴它有帮助。 :) 一个简单的问题:虽然上述解决方案有效,但它以数组形式将所有数据从 Jquery 发送到 PHP。但我想将它作为一个对象发送,以便我可以将所有数据一一作为目标并将它们存储在 MySQL 数据库中。或者,如果您知道一种将 PHP 中接收到的数组转换为对象的方法? 使用foreach循环遍历数组并将每一项保存到MySQL数据库中。

以上是关于如何通过 AJAX 将 jquery 对象数据发送到 php?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Ajax jQuery 将简单数据发送到 Django 中的views.py?

如何使用ajax将包含上传文件和字符串的数据对象发送到控制器?

通过 JQuery AJAX 一起发送 FormData 和 String 数据?

通过jQuery Ajax使用FormData对象上传文件

如何在 jQuery 中使用 Ajax 请求发送 FormData 对象? [复制]

如何在 jQuery 中使用 Ajax 请求发送 FormData 对象? [复制]