AngularJS Post Request没有捕获PHP的JSON数据返回

时间:2015-04-06 22:03:02

标签: javascript php json angularjs

我一直在我的本地服务器(XAMPP)上使用Angular的$ http服务从PHP文件发送和请求数据,但是当我开始在我的网络服务器上公开托管时遇到了多个问题。第一个问题是$ http.post一直给我这个错误:

找不到www.websitepath.com/Object%20Object

显然不是我输入的网址。我通过使用$ http服务并仅指定其POST类型来修复此问题。我知道脚本正在连接(如在AngularJS脚本中正在到达PHP脚本),并且PHP脚本工作得非常好(我自己加载并获得了我想要的字符串)。但是,AngularJS一直在给我这个:

Object {data:“”,status:200,headers:function,config:Object,statusText:“OK”}

尽管PHP脚本正在打印出一个JSON字符串,但数据似乎是空的。我的AngularJS脚本和PHP脚本的代码如下:

var promise = $http({
    method: "post",
    url: fetchTable,
    data: {
        choice: 2
    },
    headers: {'Content-Type': 'application/x-www-form-urlencoded'}
});
promise.then(function(response) {
    $scope.Units = response.data;
    $scope.errorMessage = 'Success!';
    console.log($scope.Units);
    console.log(response);
},function(error) {
    $scope.errorMessage = 'There was a problem fetching information';
});
}]);

这是我用来获取数据的PHP脚本:

    $request = file_get_contents('php://input');
    $data = json_decode($request);
    $choice = $data->choicePara;
    $query = "SELECT unit_id, unitname, unitlink, unitimg, hp, atk, def, rec, upvotes, downvotes, ranking, tier FROM vote_float_v4 ORDER BY ranking ASC";
    $result = mysqli_query($dbc, $query);
    if (!$query) {
        http_response_code(400);
        die();
    }
    else {
        $units_array = array();
        while ($unit_row = mysqli_fetch_array($result)) {
            $unit = new Unit($unit_row); //Create a new unit object based on the information from MySQL
            array_push($units_array, $unit);
        }
        print_r(json_encode($units_array));
    }

PHP正在打印我想要的内容,并且AngularJS脚本没有指出任何无法找到PHP脚本的错误。实际上,在我的PHP语法出错之前,AngularJS将警告消息返回给我。但出于某种原因,我不断回复这个奇怪的JSON对象:

Object {data:“”,status:200,headers:function,config:Object,statusText:“OK”}

为什么数据是空的?!?!如何让AngularJS获取JSON数据?我回来的方式有问题吗?

1 个答案:

答案 0 :(得分:1)

从评论中复制:

尝试在php中设置"Content-Type: application/json"标题

可悲的是,我并不确切地知道这是在修复什么......

任何角度向导都可以解释为什么没有Content-Type标头的响应体作为空字符串而不是json字符串传递给$http成功回调?