0

我正在使用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 数据库。

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

4

1 回答 1

0

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

于 2021-11-22T11:29:13.217 回答