如何使用角度javascript从(php编码的json)获取值?

时间:2015-02-16 02:45:43

标签: javascript php json angularjs

在控制台中我只能看到成功,$ scope.data.username什么都不打印。第二个问题:在我的PHP中我需要发送状态和status_massage吗?为什么呢?

在我的js中:

 $scope.register = function register() {
            $http.post('.../api/user.php', {username: $scope.user.username, password: $scope.user.password, func: 'register'}).
                    success(function(data, status, headers, config) {
                console.log('succes');
                $scope.data = data;
                console.log($scope.data.username);
            }).
                    error(function(data, status, headers, config) {
                console.log('error');
            });
        };

邮递员将返回

    {
    "status": 200,
    "status_message": "OK",
    "data": {
        "username": "smith99"
    }
}

我的php脚本确实:

            $response['status'] = 200;
        $response['status_message'] = "OK";
        $response['data'] = array(
            'username' => $user
        );    
        $jsonResponse = json_encode($response);
        echo $jsonResponse;

1 个答案:

答案 0 :(得分:1)

目前,您已将statusstatus_messagedata合并到您的回复正文中,该正文在Angular的data中被视为success(function(data, status, headers, config) {})。因此,快速而肮脏的修复是在成功回调中使用$scope.data = data.data

然而,将所有内容合并到响应主体中并不是一种正确的方法。对于HTTP response code,您应该设置为

<?php
http_response_code(200);
?>

对于您的回复正文,您只需将username设置为

即可
$response['username'] = @user   
$jsonResponse = json_encode($response);
echo $jsonResponse;

这样您就不会更改当前的Angular代码。