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

How to send jquery object data through AJAX to php?

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

所以,我创建了一个变量 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 中将数据类型添加为 JSON,但 AJAX 总是返回错误消息而不是成功。

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

所以,让我知道这怎么可能?

您忘记初始化 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。