2015-04-06 135 views
2

我一直在使用我的本地服务器(XAMPP)上的Angular的$ http服务发送和请求来自PHP文件的数据,但最近遇到多个问题,当我开始在我的Web服务器,公开托管。第一个问题是,$ http.post不停地给我这个错误:AngularJS Post请求不捕捉JSON数据从PHP返回

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

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

对象{数据: “” 状态:200头:功能配置:对象,状态文本: “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对象回来为我的回应:

对象{数据: “” 状态:200头:功能配置:对象,状态文本: “OK”}

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

+0

**编辑,错误,请参阅下面**我没有角度的专家,但文档说你应该使用承诺的'.success'回调https://docs.angularjs.org/api/ng/service/$ http(不是'.then') – Plato

+0

nvm我看到关于像你一样调用它的说明。我唯一的猜测是你没有在PHP中设置“Content-Type:application/json”标题? – Plato

+0

或可能的PHP输出实际上并没有使它对http响应。你可以显示服务器端代码,你如何调用PHP的URL? – Plato

回答

1

复制:

尝试在PHP中设置"Content-Type: application/json"

可悲的是,我不知道到底是什么,这是固定...

可以在任何角度向导提供的一个原因的解释没有Content-Type标题的响应正文传递给$http成功回调为空字符串,而不是json字符串?