Angular$HTTPPost方法在PHP中只获得一个数组值


Angular $HTTP Post method only getting one array value in PHP

I使用Angular$http将数组发布到php脚本。但是PHP脚本只从数组中获得一个值,我用$http post从angular发送这个值。

角度形状控制器:

form.strategyData = {
    mailData : {
        strategies : ['test1','test2']
    },
    sent : false
}

form.processStrategy = function() {
    $http({
        method  : 'POST',
        url     : '/sform',
        data    : $httpParamSerializer(form.strategyData.mailData),
        headers : { 'Content-Type': 'application/x-www-form-urlencoded' }
    })
    .success(function(data) {
        console.log('success')
    });
};

PHP脚本:

$strategies = $_POST['strategies'];
$message .= "Strategies: " . $strategies;

当我使用console.log时,我确实在mailData 中看到了两个测试值['test1','test2']

在PHP中,我只得到最后一个值,即test2

当您调用$httpParamSerializer(form.strategyData.mailData)时,发送到服务器的数据将是"策略=test1&策略=test2"。这就是为什么在PHP中您得到的结果是"test2"。

在php脚本中尝试var_dump($strategies);

如果转储中的所有值都是数组,请更新此行的

$message .= "Strategies: " . $strategies;

$message .= "Strategies: " . implode(" ", $strategies);