我有一个json数组,它是json编码并发布到PHP。
当我在发布之前检查数组中的值
即console.log(selection[878][2824])
我得到一个值作为结果。然后使用JSON.stringify
对变量进行json编码并发布到服务器。但是当我在json_decode
中使用php中的值并打印相同时,我得到了空数组
js脚本
console.log(selection);
$http({
method: 'POST',
url: 'example.php',
data: 'selection='+JSON.stringify(selection),
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
})
php脚本
$selectionData = json_decode($_POST['selection']);
print_r($selectionData[878][2824]);
那么在这里编码数据时会发生什么。怎么会丢失?
答案 0 :(得分:1)
似乎数据格式不正确我认为你必须格式化
中的字符串"selection :" +JSON.stringify(selection);
答案 1 :(得分:1)
试试这个
js
$http({
method: 'POST',
url: 'example.php',
data: {selection : JSON.stringify(selection)}
})
PHP
$data = json_decode(file_get_contents("php://input"),true);
$selection = json_decode($data['selection'],true);
答案 2 :(得分:0)
使用POST时,您不必对内容进行字符串化,只需设置正确的标题即可。
$http({
method: 'POST',
url: 'example.php',
data: selection,
headers: {'Content-Type': 'application/json'}
})
或者如果您需要标识符:
$http({
method: 'POST',
url: 'example.php',
data: {"selection": selection },
headers: {'Content-Type': 'application/json'}
})
并在PHP中(如果您使用附加标识符):
$selectionData = $_POST['selection'];