在控制台中我只能看到成功,$ 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;
答案 0 :(得分:1)
目前,您已将status
,status_message
和data
合并到您的回复正文中,该正文在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代码。