我只是尝试从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()函数的概念感到非常困惑。请帮我解决这个问题。
2条答案
按热度按时间khbbv19g1#
通过使用json将php数组序列化,将其转换为字符串。
$encode
因此是一个字符串,这很好。您的前端现在会得到响应,并且(因为它与
application/json
)已经将它从json字符串反序列化为javascript对象。尝试将一个对象转换为字符串会给您带来类似的结果
[object Object]
.alert
这不是合适的工具,因为它只能处理字符串。尝试
console.log
取而代之的是检查devtools控制台输出,在那里您将看到一个可探索的对象(更好的是:在devtools调试器中,在成功处理程序中设置一个断点,并在该点检查对象。)一句话:一切正常,只是你没有使用正确的方法来观察你的物体。
arknldoa2#
@cherrydt我想我解决了这个问题。
php使用json_encode将数组作为字符串发送。
angularjs response.data将响应作为对象。
循环遍历response.data对象,并将键/值推送到变量make。
使用创建字符串
JSON.stringify
.使用以下命令将json字符串转换为对象
angular.fromJson
.我看了几篇博客,其中分配了
response.data
对象直接指向$scope变量,但在我的例子中,它不起作用。我使用的angularjs版本是:AngularJSV1.2.8