我一直在寻找使用AJAX和jQuery来实现我想要做的事情,但是我没有使用它们中的任何一个并且我有点头疼。
我想做的是从MySQL数据库中显示一个数据表。我希望这个表是分页的,因此每页限制为大约25个结果。
最后,我想要一个递归脚本,它使用AJAX或类似的方法获取更新的结果集。
没有尝试学习所有这些东西并尝试将它们全部放在一起,是否有一个更紧凑的简单库我可以用来实现这个自动更新数据表?
如果没有,有人可以指点一些基本的分步指南,从哪开始呢?
答案 0 :(得分:2)
你的AJAX SQL调用就像这样:
WITH cte AS(
SELECT ROW_NUMBER() OVER (ORDER BY ID DESC) RowNumber, * FROM my_table)
SELECT ID, column FROM cte
WHERE RowNumber BETWEEN ".(page*nxtAmnt)+1." AND ".(page+1)*nxtAmnt
传递page
的地方(通过nxt
),nxtAmount
是每页的记录数(25)。
您还需要按钮来激活它:
<div id="pages"></div>
<input type="button" value="Previous" onclick="page('d');"/>
<input type="button" value="Next" onclick="page('u');"/>
你的JS就是
var pagCounter=0;
function page(input){
if(input=='u')
pagCounter++;
else
pagCounter--;
if(pagCounter<0){
pagCounter=0;
}
getNext();
}
function getNext(){
if(pagCounter<0)
pagCounter=0;
$.ajax({
type: "GET",
url: "AJAX.php",
data: "nxt="+pagCounter,
async: true,
cache: false,
success: function(data){ /* called when request completes */
if(data!=""){
$("#pages").html(data);
}
else{
$("#pages").html("No options found");
}
}
});
};
修改强>
根据您的评论,这里是对SQL的解释。
WITH cte AS(
有点像将结果拉入临时表然后使用它。在这种情况下,该表名为cte
SELECT ROW_NUMBER() OVER (ORDER BY ID DESC) RowNumber, * FROM my_table)
这是填充cte
表的查询。它包括Row Numbers
(按ID
DESC排序)以及*
,但如果您愿意,可以更改此内容。
SELECT ID, column FROM cte
WHERE RowNumber BETWEEN ".(page*nxtAmnt)+1." AND ".(page+1)*nxtAmnt
这是使用cte
表的常规查询。我们通过在某些行号之间保持结果来限制记录(这是每页的页码次数)。
因此,在PHP中,您可以传入页码,每页编码#(也可以传入),查询将为您提供所需内容。
答案 1 :(得分:0)
您可以使用jqGrid
要再次获取数据,您应该执行以下操作:
setInterval(function(){
$("#myGridId").trigger("reloadGrid");
}, 1000);
使用方法.setPostData()
更改参数。
答案 2 :(得分:0)
我不知道一个好的预装版本,但你真的只需要几个相对简单的东西:
GET
个参数来指示哪些行,并从DB返回它们(简单)编辑:请注意,如上所述,JQuery是不必要的 - 您可以使用它,如果您愿意,可能会简化其中的几个步骤。