我试图通过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传递对象键和值时获取它们。
在这里,您多次传递一个字符串,更改值:
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)