在js脚本中有以下内容:
let skippers = {};
for(let i = 0; i < skipperIds.length;i++){
skippers[skipperIds[i].value] = skipperIds[i].checked;
}
regData.skippers = skippers;
responseData = sendData2('https://sailwbob.com/lagin/public/register.php',regData);
其中sendData2是使用axios的异步调用。船长看起来就像
{1:true,20:false}
在我的php文件中有:
$skippers = ($_POST['skippers']);
$skipperIds = array_keys($skippers);
$skipperValues = array_values($skippers);
但这不管用。我认为php将$_POST中的数组转换为字符串,但我不确定。
两个问题:
的结果?
更新:
我尝试了$x=json_decode($_POST);但是发现了一个错误,它说它需要一个字符串。
下面是对axios的调用:
function sendData2(url,emailPass){
let bodyFormData = new FormData()
for (const [key, value] of Object.entries(emailPass)) {
//console.log(key,value)
bodyFormData.append(key,value)
}
return axios({
method: 'POST',
url: url,
data: bodyFormData,
headers: {'Content-Type': 'multipart/form-data'}
})
.then(function(response){
return response.data
})
.catch(function(response){
return response
})
}
update2:
$skippers显示$skippers = Object对象。是否有一种方法可以正确地将这个发送到服务器?
发布于 2021-07-05 15:50:15
正如在this article中所讨论的那样,axios将Javascript对象序列化为JSON,并且因为PHP不支持JSON作为填充$_POST的数据格式,您可以在PHP中检索它们,如下所示:
$_POST = json_decode(file_get_contents("php://input"),true);
$skippers = $_POST['skippers'];
发布于 2021-07-05 16:50:14
虽然axios会自动压缩数据,但它显然不会对嵌套数组这样做。我需要补充一句:
regData.skippers = JSON.stringify(skippers); in my js
然后在php文件中
$skippers = get_object_vars(json_decode($_POST['skippers']));
https://stackoverflow.com/questions/68262682
复制相似问题