jQuery在服务器端进行多重数据解码

时间:2014-06-27 12:13:18

标签: javascript php jquery ajax arrays

情境:

我有一个jQuery.ajax调用,它将三个数组提交给服务器以保存到数据库。我需要将正在传输到服务器的组合数据对象解码为三个数组。

服务器在php

中运行

如果场景含糊不清,我要问的是,如何将$input再次拆分为三个数组。 (这是在php方面。)

预期结果:

将对象分解为三个单独的数组以进行处理。

当前结果:

当我开始处理第一个数组时出现内部服务器错误。

在我们开始使用代码之前注意:我还在学习,请随时欢迎任何提示/指针。

代码:

jQuery.ajax

jQuery.ajax({
    url: "save_all.php",
    type: "POST",
    dataType: 'json',
    data: { grades: JSON.stringify($scope.grades), commutators: JSON.stringify($scope.commutators), sGrades: JSON.stringify($scope.sGrades)},
    success: function (data) {
        console.log(data);
    },
    error: function (data) {
        console.log(data);
    }
});

save_all.php

    <?php

        $input = json_decode(file_get_contents("php://input"), true);

        $grades = $input["grades"];
        $commutators = $input["commutators"];
        $sGrades = $input["sGrades"];

1 个答案:

答案 0 :(得分:1)

您没有JSON作为整个POST数据,您有URL编码的键/值对,其值为JSON,因此您无需访问原始POST数据。您的每个JSON字符串都在标准$_POST数组中。

PHP:

$grades = json_decode($_POST['grades']);
$commutators = json_decode($_POST['commutators']);
$sGrades = json_decode($_POST['sGrades']);

注意:ajax请求中的dataType: 'json'是指响应数据类型,而不是请求。