나는 perl cgi를 호출하여 그리드를 채우는 jqgrid를 가지고있다. cgi는 DBD :: Oracle을 사용하여 데이터를 가져옵니다. 그리드가 데이터를 표시하지 않습니다.jqgrid ajax와 perl cgi 및 dbd oracle
스크립트를 디버깅 할 때 명령문이 준비 될 때 충돌이 있음을 발견했습니다. 준비를 건너 뛰고 데이터를 보내면 제대로 작동합니다. 내가 오라클에서 PostgreSQL로 바꿀 때 잘 돌아 간다.
누구나이 경험이 있습니까? 대화식으로 실행할 때 CGI가 실행되어 화면에 인쇄되기 때문에 CGI가 Oracle 연결로 작업하고 있다는 것을 알고 있습니다. 그리드에서 CGI가 호출 될 때 CGI가 호출되지 않습니다. 는 CGI가 대학원 연결 호출 및 그리드에 데이터로드를 준비 할 때 -
는 CGI 완벽한 : 나는 결론있어
#!/usr/bin/perl
use CGI;
use DBI;
use Connect::Oracle;
use Connect::PG;
$stat = new CGI("");
print $stat->header;
$count = $stat->url_param('count');
#connecting to either db works fine
my $ORdbh = DBI->connect(Oracle->User, {PrintError=>1,RaiseError=>1});
# my $ORdbh = DBI->connect(PG->User, {PrintError=>1,RaiseError=>0});
$select = qq/select * from db.table/;
# preparing with Oracle connection works fine, but nothing returned to grid.
# Not even the hardcoded $rows below!
# Preparing with PG connection works also but $rows returns to grid
my $select_batch_status = $ORdbh->prepare($select);
#$select_batch_status->execute();
#$select_batch_status->bind_columns(\$COLLECTID, \$SYSTEM);
....removed fetch()....irrelevant
#The JSON is fine
$rows = qq/["COLLECTID","SYSTEM"]/;
$data = qq/{"page":"1","total": 1, "records": "$row_count", "rows": [/;
$data .= $rows;
$data .= qq/]}/;
print "$data";
exit;
을있는 jqGrid와 DBD :: 오라클 만 사이에 충돌이있다 나는 더 낮은 것을 디버깅 할 방법이 없다. 그리드는 Pg와 잘 작동하지만 오라클을 사용하고 싶습니다. 크롬 개발자 도구에 나는 경고 나 오류가 표시되지 않으며, CGI는 데이터
를 전송하지그리드 :
<script type="text/javascript">
var counter=0;
jQuery(function() {
jQuery("#list3").jqGrid({
url:'./collect.cgi?count=' + counter,
datatype: "json",
ajaxGridOptions: { contentType: 'application/json; charset=utf-8' },
colNames: ['COLLECT ID', 'SYSTEM'],
colModel: [
{name: 'collectid', index: 'collectid', width: 100},
{name: 'system', index: 'system', width: 50},
],
rowNum: 20,
rowList: [15, 30, 45],
pager: '#pager3',
sortname: 'system',
sortable: true,
loadonce: true,
viewrecords: true,
sortorder: "asc",
rowTotal: 500,
jsonReader: {
cell: "",
id: "0"
},
gridview: true,
loadComplete: function() {
$(document).ready(function() {
setTimeout (function() {
counter++;
$("#list3").jqGrid().setGridParam({
url: './collect.cgi?count=' + counter,
datatype: 'json',
loadonce: true
}).trigger("reloadGrid",[{current:true}]);
}, 10000);
});
},
loadError: function(xhr,st,err) {
$("#jsonmapMessage").html("Type: " + st + "; Response: " + xhr.status + " " + xhr.statusText);
},
loadtext: "updating...",
caption: "COLLECTION MONITOR CONTROL",
width: 'auto',
height: '500'
});
$("#list3").jqGrid('navGrid','#pager3',{edit:true,add:true,del:true,refresh:true});
});
</script>