我试图从数据库中获取一些注释。我创建了一个设置为2的计数器
var limit=2;
一旦用户单击它,则注释计数设置为4,第二次计数器值设置为6 ..... etc
问题是,当我第一次单击该按钮时,显示的是6条记录而不是4条记录
$(document).ready(function(){
var limit=2;
$(document).on('click','.more',function(){
limit=limit+2;
$('#comments').load("loadComments.php",{
limit:limit
});
});
});
这是loadComment.php
$limit=$_POST["limit"];
$sql = "SELECT * FROM comments order by id desc limit $limit ";
答案 0 :(得分:2)
您非常亲密
$(document).ready(function(){
var limit=2;
$(document).on('click','.more',function(){
limit=limit+2;
$('#comments').load("loadComments.php?limit="+limit);
});
});
$limit = (int)$_GET["limit"];
//$limit = intval($_GET["limit"]); //if you like functions better they are basically the same.
$sql = "SELECT * FROM comments order by id desc limit $limit";
load
是第一个$_GET
请求,因此您可以通过URL中的查询字符串传递限制。
然后,将限制强制转换为整数。许多准备好的语句不能很好地处理限制或order by子句。更不用说我不知道您正在使用哪个数据库或库。但是投射它应该解决大多数问题。
现在,如果load
可以满足您的要求(将html加载到容器中),则可以使用(int)
,但这被认为是Get类型请求。有些人出于某种原因认为POST比GET更安全,但事实并非如此。因此,如果这样会使您的代码更易于阅读和实现,那就好了。
说明:从服务器加载数据并将返回的HTML放入匹配的元素中。
最后我要提一下的是SQLInjection:
最好总是让您的查询准备好语句。查询中的ORDER BY和LIMIT子句有点棘手。但是由于limit只接受一个数字,我们可以将其强制转换为int intval()
,或使用creation_time
干杯。