AngularJs - json_encode 在某些情况下不返回任何内容
AngularJs - json_encode returning nothing in certain cases
我正在使用 $http.get 从服务器获取一些信息。首先控制器调用后端服务,在服务中我调用 $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 框架下运行。
寻找课程:
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);
}
这样做我在控制台上得到响应:
对象{数据:“”,状态:200,配置:对象,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);
我确实得到了那个数组作为响应...
我错过了什么?我知道这可能是一个愚蠢的错误,但到目前为止我还没能解决它...
非常感谢!!
我做了一点修改使其工作,因为请求的结果带回了一个带有重音符号的字符串,例如:"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 成功了。
我正在使用 $http.get 从服务器获取一些信息。首先控制器调用后端服务,在服务中我调用 $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 框架下运行。
寻找课程:
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);
}
这样做我在控制台上得到响应:
对象{数据:“”,状态:200,配置:对象,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);
我确实得到了那个数组作为响应...
我错过了什么?我知道这可能是一个愚蠢的错误,但到目前为止我还没能解决它...
非常感谢!!
我做了一点修改使其工作,因为请求的结果带回了一个带有重音符号的字符串,例如:"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 成功了。