社区首页 >问答首页 >如何读取异步调用中传递给php的数组

如何读取异步调用中传递给php的数组
EN

Stack Overflow用户
提问于 2021-07-05 14:35:12
回答 2查看 109关注 0票数 0

在js脚本中有以下内容:

代码语言:javascript
代码运行次数:0
复制
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的异步调用。船长看起来就像

代码语言:javascript
代码运行次数:0
复制
{1:true,20:false}

在我的php文件中有:

代码语言:javascript
代码运行次数:0
复制
$skippers = ($_POST['skippers']);           
            
$skipperIds = array_keys($skippers);
$skipperValues = array_values($skippers);

但这不管用。我认为php将$_POST中的数组转换为字符串,但我不确定。

两个问题:

  1. 如何将$skippers转换回数组?我一直试图使用print_r查看服务器上的数据,但由于这是一个异步调用,它无法工作,因为print_r结果将被发送回js脚本,而不是打印在屏幕上。有没有办法查看print_r?

的结果?

更新:

我尝试了$x=json_decode($_POST);但是发现了一个错误,它说它需要一个字符串。

下面是对axios的调用:

代码语言:javascript
代码运行次数:0
复制
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对象。是否有一种方法可以正确地将这个发送到服务器?

EN

回答 2

Stack Overflow用户

发布于 2021-07-05 15:50:15

正如在this article中所讨论的那样,axios将Javascript对象序列化为JSON,并且因为PHP不支持JSON作为填充$_POST的数据格式,您可以在PHP中检索它们,如下所示:

代码语言:javascript
代码运行次数:0
复制
$_POST = json_decode(file_get_contents("php://input"),true);
$skippers = $_POST['skippers'];
票数 0
EN

Stack Overflow用户

发布于 2021-07-05 16:50:14

虽然axios会自动压缩数据,但它显然不会对嵌套数组这样做。我需要补充一句:

代码语言:javascript
代码运行次数:0
复制
 regData.skippers = JSON.stringify(skippers); in my js 

然后在php文件中

代码语言:javascript
代码运行次数:0
复制
$skippers = get_object_vars(json_decode($_POST['skippers']));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68262682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档