我在后端使用 perl 模块和 cgi 脚本,在前端使用prototypejs。我基本上是在使用 ajax 来调用在服务器上运行的 cgi 脚本,该脚本调用另一个文件将发送的数据放入 oracle db 中。
前端脚本是:
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 返回值在表更新时显示为未定义,但是当我使用 console.log(json.line_number) 时,我可以看到原始值。过去 4 个小时一直在做这件事,我疯了!!
我检查过的事情:
这些值正确地从数据库中取出,我在错误日志中生成了它们
生成的值的数量也等于所需的值
当我收到 json 返回时,这正是所需要的。