1

我想每秒刷新从外部 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);

但都没有奏效。

4

1 回答 1

0

主要错误是datatype: 'json', url: 'get_data.php'作为reloadGrid. 该方法reloadGrid只了解两个选项:currentpage(见答案)。由于使用情况,您需要重置datatypejqGrid 的选项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并且可以遵循递归(参见代码行答案)。

于 2013-07-17T11:52:10.957 回答