AngularJs - json_encode在某些情况下不返回任何内容

时间:2016-07-15 15:19:00

标签: angularjs json cakephp response

我正在使用$ http.get从服务器获取一些信息。首先,控制器调用BackendServices,在服务中我调用$ http.get:

控制器:

app.controller('courseController', ['$scope', 'BackendServices', function ($scope, BackendServices) {
    BackendServices.lookForCourses().then(
        function (response) {
            console.log(response);
        },
        function (response) {

        }
    );

    $scope.addCourse = function (courseName) {
        console.log(courseName);
    };
}]);

服务:

app.service('BackendServices', function ($http) {
    var backendServices = {};

    backendServices.lookForCourses = function () {
        return $http.get('app/backend/lookForCourses');
    }

    return backendServices;
});

PHP文件在cakePHP框架下工作。

lookForCourses:

public function lookForCourses () {
    $this->autoRender = false;

    $cursosFind = $this->Curso->find('all', array('fields' => array('nombreCurso')));

    $cursos = array();

    foreach($cursosFind as $index => $curso) {
        $cursos[$index]['nombre'] = $curso['Curso']['nombreCurso'];
    }

    echo json_encode($cursos);
}

这样做我在控制台上作为回应:

Object {data:“”,status:200,config:Object,statusText:“OK”}

如果我这样做:

var_dump($cursos);

我得到以下内容:

array (size=3)
  0 => 
    array (size=1)
      'nombre' => string 'Tecnologias de la informacion' (length=29)
  1 => 
    array (size=1)
      'nombre' => string 'Propedeutico' (length=12)
  2 => 
    array (size=1)
      'nombre' => string 'Lectura y redaccion' (length=19)

但是,如果我执行以下操作:

$test = array(array('nombre' => 'Propedeutico'), array('nombre' => 'Tecnologias'));

echo json_encode($test);

我确实把这个数组作为回应......

我错过了什么?我知道这可能是一个愚蠢的错误,但到目前为止我还没能解决它......

非常感谢!!

1 个答案:

答案 0 :(得分:1)

我做了一些修改工作,因为请求的结果带回一个带重音的字符串,例如:“Tecnología”,我不得不utf8_encode这样的每一个元素:

public function lookForCourses () {
    $this->autoRender = false;

    $cursosFind = $this->Curso->find('all', array('fields' => array('nombreCurso')));

    $cursos = array();

    foreach($cursosFind as $index => $curso) {
        $cursos[$index]['nombre'] = utf8_encode($curso['Curso']['nombreCurso']);
    }   

    echo json_encode($cursos);  
}

添加ut8_encode就可以了。

相关问题