php - AngularJS - $http GET 响应总是 [object Object]
问题描述
我只是想从 PHP 中获取一组键值对并将响应发送回 AngularJS $http GET 请求:
PHP 代码 get_projects.php 文件:
<?php
header('Content-Type: application/json');
$data = [{"id" => 1, "name" => 'Audi'}, {"id" => 2, "name" => 'BMW'}, {"id" => 3, "name" => 'Honda'}];
$encode = json_encode($data);
echo $encode;
?>
AngularJS 控制器代码:
app.controller('MainController', ['$scope', '$http', function ($scope, $http) {
$scope.name = 'Search';
$scope.projects = '';
$http({
method: 'GET',
url: 'includes/get_projects.php',
params: {}
}).then(function success(response) {
$scope.projects = response.data;
alert($scope.projects);
});
}]);
alert($scope.projects);
总是[object Object]
返回。echo gettype($encode);
打印但string
警告语句打印[object Object]
。我试过angular.fromJson()
了,但它仍然打印[object Object]
。
我真的对 PHP 中 json_encode() 函数的概念感到困惑。请帮我解决问题。
解决方案
@CherryDT 我想我解决了这个问题。
var make = [];
for (var key in response.data) {
if(response.data.hasOwnProperty(key)){
make.push({
"id": response.data[key].id,
"name": response.data[key].name
});
}
}
$scope.projects = JSON.stringify(make);
$scope.projects = angular.fromJson($scope.projects);
- PHP 使用 json_encode 将数组作为字符串发送。
- AngularJS response.data 将响应作为对象。
- 遍历 response.data 对象并将键/值推送到变量 make。
- 用 . 创建一个字符串
JSON.stringify
。 - 使用 . 将 JSON 字符串转换为 Object
angular.fromJson
。
我查看了几个将response.data
对象直接分配给 $scope 变量的博客,但在我的情况下它不起作用。
我使用的 AngularJS 版本是:AngularJS v1.2.8
推荐阅读
- javascript - 是什么让 JavaScript 函数异步?
- sql - 接受 item_num 并报告其描述、价格和现有数量的 PL/SQL 过程不起作用
- python - 如何在 Python 中隐藏一个值?(显示为 *)
- python - 分析 pandas 中的数据,其中一些值是 dicts 列表
- c# - 更改输入时软键盘消失
- mysql - 使用 TinyMCE 发布的图像是否有大小限制?
- php - 在该选项卡中单击分页链接时如何激活选项卡?
- haskell - 我可以在 Data.Aeson 和 Data.Yaml 之间重用 ToJSON 和 FromJSON 实例吗?
- javascript - 检查总值的功能
- android - 导致崩溃的android按钮