提问者:小点点

通过Axios将带有对象的数组传递给PHP


我试图通过Axios post将包含对象的数组传递给PHP。我正在使用formData附加或设置数据。

const product_id_list = [{ title: 'hello' }, { title: 'ohhello' }]

const bodyFormData = new FormData();
bodyFormData.append('post_id', post_id)
bodyFormData.append('action', 'uploadShowcaseContent')

product_id_list.forEach((item) => {
   bodyFormData.append('product_id_list[]',item);
});

axios.post(`${__WP_VARS.AJAX_URL}`, bodyFormData)
     .then((resp) => {
         console.log('post respect is', resp)
     })

然后在我的PHP中,我尝试循环遍历数组并获取标题字符串。

$content = $_POST['product_id_list'];

$内容变量确实告诉我我有一个数组。然而,当我在数组上做前处理时

foreach ($content as $item) {
    echo $item;
}

在我的控制台响应中,我得到数据:"[对象对象][对象对象]"

当我试图呼应标题时,

foreach ($content as $item) {
    echo $item->title;
}

我得到一个空字符串。

我一直在试图弄清楚如何在PHP中循环,并在通过AXIOS传递对象键和值时获取它们。


共1个答案

匿名用户

在这里,您多次传递一个字符串,更改值:

bodyFormData.append('product_id_list[]',item);

所以你实际上是在发送一个字符串而不是一个数组。相反,您应该在发送数组和对象之前对它们进行字符串化:

const product_id_list = [{ title: 'hello' }, { title: 'ohhello' }]

const bodyFormData = new FormData();
bodyFormData.append('post_id', post_id)
bodyFormData.append('action', 'uploadShowcaseContent')
bodyFormData.append('product_id_list',JSON.stringify(product_id_list));

...

然后,要查看您在php中实际收到的内容:

$content = $_POST['product_id_list'];
var_dump($content)