我一直在使用我的本地服务器(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数据?我回来的方式有问题吗?从评论
**编辑,错误,请参阅下面**我没有角度的专家,但文档说你应该使用承诺的'.success'回调https://docs.angularjs.org/api/ng/service/$ http(不是'.then') – Plato
nvm我看到关于像你一样调用它的说明。我唯一的猜测是你没有在PHP中设置“Content-Type:application/json”标题? – Plato
或可能的PHP输出实际上并没有使它对http响应。你可以显示服务器端代码,你如何调用PHP的URL? – Plato