我正在使用$ 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);
我确实把这个数组作为回应......
我错过了什么?我知道这可能是一个愚蠢的错误,但到目前为止我还没能解决它......
非常感谢!!
答案 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就可以了。