0

好的,所以我将 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))));

}

获取详细信息.CTP

<?php
    if((isset($empInfo))){
        echo $javascript->object($empInfo);
    }

?>

当我记录它时,我得到以下(截图):

JSON 屏幕截图

如何正确使用以下信息(这是 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"}}]
4

1 回答 1

1

您的响应将作为字符串返回(console.log 显示您正在循环遍历字符串的每个字符),并且不会被解析为 JSON。

我认为这是因为您在 jQuery AJAX 选项中有datatype代替dataType(注意大写 T)。如果你解决了这个问题,jQuery 应该会自动为你解析 JSON。

或者,您可以将字符串传递给JSON.parse(如果存在,如果不存在,则应该polyfill

于 2013-04-24T14:51:59.180 回答