【问题标题】:PHP parsing JSON stringPHP解析JSON字符串
【发布时间】:2014-01-24 12:44:21
【问题描述】:

我在将一些信息从我的 Angularjs 代码传递到我的 PHP 代码进行处理时遇到了很大的麻烦。

JS

控制器

var dataString = '{"round": {"number": 1,"drops": [{"pos": "0","cust": 1025}]}}';
dropService.updateDrops(dataString)
    .success(function(data) {
        console.log(data);
})

服务

updateDrops : function(drops) {
        return $http({
            url: "/app/php/update_rounds.php",
            method: "POST",
            data: drops,
            headers: {'Content-Type': 'application/x-www-form-urlencoded'}
        });
    }

PHP

$dropString = $_POST;

$dropArray = json_decode($_POST);
$a = $dropArray->{"round"}->{"number"};

echo "Round = ".$a;

我希望在控制台上看到的是

圆 = 1

但我得到的是

圆 =

显然有些事情正在搞砸。但是,如果我更换

$dropString = $_POST;

$dropString = '{"round": {"number": 1,"drops": [{"pos": "0","cust": 1025}]}}';

一切正常,所以我知道如果我能获得正确的数据,PHP 就会工作。我哪里错了?

【问题讨论】:

  • $_POST 是一个包含所有已发布值的 PHP 数组。尝试var_dump($_POST); 检查您的数据使用了哪些数据,或在您的 AJAX 请求中提供一个您专门使用的数据

标签: javascript php json angularjs


【解决方案1】:

$_POST 是一个键=>值对的数组

您正在寻找整个 POST BODY 作为字符串。使用这个:

$dropString = http_get_request_body();

编辑:如果这不起作用,请使用

$dropString = file_get_contents('php://input');

【讨论】:

  • 可能要注意,这仅在pecl_http 中可用,否则只需使用file_get_contents('php://input')
【解决方案2】:

这是我使用 Angular、PHP 和 MySQL 的工作示例。我使用 JSON 在控制器和 PHP 数据集文件之间进行通信。 my example on GitHub

开始阅读:controllers.js

最有趣的行(在本例中)位于文件“controllers.js”的第 54-63 行。 如下所列:

$scope.updateTable = function() {
    $http({
        url: 'phpcode/dataset1.php',
        method: 'GET',
        params: {table: $scope.choice, index: $scope.index, viewingSize: $scope.viewingSize, sort: $scope.sortChoice},
    }).success(function(data) {
        $scope.rows = data.rows;
        $scope.columns = data.columns;
    });
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-28
    • 2021-04-25
    • 2014-07-22
    • 2015-05-09
    相关资源
    最近更新 更多