如何通过 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 数据?