首页 > 解决方案 > 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() 函数的概念感到困惑。请帮我解决问题。

标签: phpangularjsajax

解决方案


@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);
  1. PHP 使用 json_encode 将数组作为字符串发送。
  2. AngularJS response.data 将响应作为对象。
  3. 遍历 response.data 对象并将键/值推送到变量 make。
  4. 用 . 创建一个字符串JSON.stringify
  5. 使用 . 将 JSON 字符串转换为 Object angular.fromJson

我查看了几个将response.data对象直接分配给 $scope 变量的博客,但在我的情况下它不起作用。

我使用的 AngularJS 版本是:AngularJS v1.2.8


推荐阅读