原型中的json值显示为未定义

时间:2012-09-10 22:00:26

标签: ajax json perl prototypejs

我在后端使用perl模块和cgi scrips,在前端使用prototypejs。我基本上使用ajax来调用在服务器上运行的cgi脚本,该脚本调用另一个文件将发送的数据放入oracle db。

fronend脚本是:

new Ajax.Request ('ajax-sr-update.cgi', {
    method: 'post',
    asynchronous: 'false',
    parameters: { 
        incident_id: incident_id,
        serial_number: $F('serial_number'),
        cmd: 'Add Serial'
    },
    onSuccess: function(transport) {
    var json = transport.responseJSON();
    if (json) {
        if (json.error_message) {
            //display error message
            } 
        else if (json.incident_id) {            
            //append the output in an alredy displated table
            var new_row = '<tr id="alt-row-'+json.line_number+'">';
                new_row += '<td id="serial_number-'+json.incident_id+'" style="border-left: solid 1px #eeeeee;">'+json.serial_number+'</td>';
                new_row += '<td id="product_number-'+json.incident_id+'">'+json.product_number+'</td>';
                new_row += '<td id="transaction_type-'+json.incident_id+'">'+json.transaction_type+'</td>';
                new_row += '<td id="failure_analysis_flag-'+json.incident_id+'">'+json.failure_analysis_flag+'</td>';
                new_row += '</tr>';
                Element.replace('add-loading-row', new_row);
            } else {
                //display a general error
            }
        } else {
            //display general message
        }

    },
    onFailure: function(data) {
        //display general error message
    }
});

我面临的问题是当表更新时,所有json返回的值都显示为undefined,但是当我使用console.log(json.line_number)时,我可以看到原始值。过去4个小时一直在做这件事,让我失去理智!

我检查过的事情:

  1. 值正在从数据库中正常运行,我在错误日志中生成了它们

  2. 生成的值的数量也等于所需的值

  3. 当我收到json返回时,它正是所需要的。

1 个答案:

答案 0 :(得分:1)

试试console.log(new_row)?它可能会向您展示您缺少的东西。