JSON字符串化后json_decode无法正常工作

时间:2015-06-03 11:49:12

标签: javascript php jquery json

我有一个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]);

那么在这里编码数据时会发生什么。怎么会丢失?

3 个答案:

答案 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'];