我一直在我的本地服务器(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数据?我回来的方式有问题吗?
答案 0 :(得分:1)
从评论中复制:
尝试在php中设置"Content-Type: application/json"
标题
可悲的是,我并不确切地知道这是在修复什么......
任何角度向导都可以解释为什么没有Content-Type
标头的响应体作为空字符串而不是json字符串传递给$http
成功回调?