通过XHR获取json数据,无限期地动态智能渲染dhtmlxgrid循环

Fetching json data via XHR for dynamic smart rendering of dhtmlxgrid loops indefinitely

本文关键字:智能 动态 循环 dhtmlxgrid 无限期 获取 XHR json 数据 通过      更新时间:2023-09-26

我试图在使用enableSmartRendering()滚动dhtmlxgrid时获取数据。初始load()运行良好,因此网格的顶部是可读的。但是,只要我向下滚动到没有数据的地方,并且它试图加载更多数据,浏览器就会继续触发XHR请求,直到我再次向上滚动,没有更多的数据填充网格。

Javascript:

mygrid = new dhtmlXGridObject("grid");
mygrid.setImagePath("codebase/imgs/");
mygrid.setHeader("Col1,Col2");
mygrid.setInitWidths("100,200");
mygrid.setColAlign("right,left");
mygrid.setColTypes("ro,ro");
mygrid.enableSmartRendering(true, 20);
mygrid.init();
mygrid.load("test.php?anrop=ajax", "json");
PHP:

if (isset($_GET['posStart'])) {
    $start = $_GET['posStart'];
} else {
    $start = 0;
}
if (isset($_GET['count'])) {
    $c = $_GET['count'];
} else {
    $c = 20;
}
$data['total_count'] = 1000;
$data['pos'] = $start;
for ($i = $start;$i <= ($start + $c) && $i < 1000;$i++) {
    $data['rows'][$i]['id'] = $i;
    $data['rows'][$i]['data'][0] = $i;
    $data['rows'][$i]['data'][1] = "string";
}
echo json_encode($data);

链接到显示该问题的短视频。

我试着在这个网站和其他网站上搜索,没有发现任何人遇到这个确切的问题。当我试图将动态智能渲染添加到较旧的代码片段时,我遇到了这个问题,并认为我应该制作这个简单,简短的版本,以确保它不是旧代码的东西,它仍然无法工作,但我似乎无法自己找出解决方案。我错过了什么?

我最终找到了一个解决方案。我没有建立正确的阵列。如此:

$rows = array();
$temprows = array();
$rows['total_count'] = 1000;
$rows['pos'] = $start;
for ($i = $start;$i <= ($start + $c) && $i <= 1000;$i++) {
    $row = array();
    $data = array();
    $row['id'] = $i;
    $data[0] = $i;
    $data[1] = "string";
    $row['data'] = $data;
    array_push($temprows,$row);
}
$rows['rows'] = $temprows;
echo json_encode($rows);