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))));

}

GETDETAILS.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 として解析されていません。

datatypeこれは、jQuery AJAX オプションに代わりにdataType(大文字の T に注意してください)があるためだと思います。これを修正すると、jQuery は自動的に JSON を解析するはずです。

または、文字列をJSON.parseに渡すこともできます(存在する場合、存在しない場合はpolyfillを使用する必要があります) 。

于 2013-04-24T14:51:59.180 に答える