我想每秒刷新从外部PHP页面获取的数据。 PHP发送JSON数据,通过AJAX调用检索。使用此代码,我正确地看到了表格,但我需要刷新浏览器以查看新数据。
$(document).ready(function() {
$("#list").jqGrid({
url: 'get_data.php',
datatype: 'json',
mtype: 'GET',
jsonReader: {
repeatitems : false,
},
colNames: [.............],
colModel: [.............],
autowidth: true,
height: 'auto',
loadonce: true,
key: true,
altRows: true,
altclass: 'odd',
rowNum: 100,
viewrecords: true,
gridview: true,
gridComplete: function(){
if(this.x == undefined){
var j = 0;
this.x = 1;
while(j < mydata2.length){
jQuery("#list").addRowData(mydata2[j].id, mydata2[j]);
j++;
}
}
return true;
}
})
});
要更新我已经尝试过的数据:
var $grid = $("#list"), timer;
timer = setInterval(function () {
$grid.trigger('reloadGrid', [{current: true, datatype: 'json', url: 'get_data.php'}]);
}, 1000);
而且:
var refreshId = setInterval(function() {
// ... jqGrid function ...
}, 1000);
但都没有奏效。
答案 0 :(得分:0)
主要错误是使用datatype: 'json', url: 'get_data.php'
作为reloadGrid
的选项。方法reloadGrid
只能理解两个选项:current
和page
(请参阅the answer)。由于使用datatype
,您需要重置jqGrid的loadonce: true
选项。所以你需要替换
$grid.trigger('reloadGrid',
[{current: true, datatype: 'json', url: 'get_data.php'}]);
在setInterval
内部调用以下内容
$grid.jqGrid("setGridParam", {datatype: "json"})
.trigger("reloadGrid", [{current: true}]);
它应该解决您刷新数据的主要问题。另外我建议你检查我怀疑的gridComplete
代码。我不完全明白。您应该考虑addRowData
调用调用updatepager
的内部gridComplete
方法,然后进行递归(请参阅the line of code和the answer)。