好的,所以我使用了cakephp 1.2,jquery和ajax与JSON的组合。这就是我正在做的事情:
当一个人输入一个员工ID时,我会得到该员工ID的结果(如果有),然后我将其作为$javascript->object(empInfo)
发回。这很好用。我将信息返回给函数,但我似乎无法处理它。我读过的所有内容都将其用作$.each(empInfo, function()
。这是我的代码:
COMMON.JS
$(document).ready(function() {
$('#emp_num').blur(function() {
if($(this).val().length != 0) {
$.ajax({
type: "POST",
datatype: "json",
url: '/ir_employees/getdetails/empId:' + $(this).val(),
success: function(empInfo) {
populateEmployeeInformation(empInfo);
}
});
}
});
});
function populateEmployeeInformation(empInfo) {
$.each(empInfo, function() {
console.log(this);
});
}
EMPLOYEES_CONTROLLER.PHP
function getdetails() {
$empId = $this->passedArgs['empId'];
$this->layout = 'ajax';
$this->set('empInfo', $this->IrEmployee->find('all',
array('conditions' =>
array('IrEmployee.employee_number' => $empId))));
}
GETDETAILS.CTP
<?php
if((isset($empInfo))){
echo $javascript->object($empInfo);
}
?>
当我记录它时,我得到以下(截图):
如何正确使用以下信息(这是Firebug的“回复”):
[{"IrEmployee":{"id":"1","employee_number":"xxxxx","last_name":"Doe","first_name":"John","gender":"M","date_hired":"2013-04-09","date_of_birth":"1950-01-01","plant_id":"0"}}]
答案 0 :(得分:1)
您的响应将作为字符串返回(console.log显示您循环遍历字符串的每个字符),并且未被解析为JSON。
我认为这是因为你在jQuery AJAX选项中有datatype
而不是dataType
(注意大写T)。如果你解决了这个问题,jQuery应该自动为你解析JSON。
或者,你可以将字符串传递给JSON.parse(如果它存在,如果不存在,你应该polyfill)