当我使用page=1
时,一切正常。但是如果我改变了
$.get("getajax.php","page=1" ,function(data){ }
到
$.get("getajax.php","page="+pageno ,function(data){ }
然后程序返回一个false和"致命错误:在非对象上调用成员函数fetch_assoc()",我认为这意味着$ result有问题。因此,$ query有一个问题?
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="jquery.js" type="text/javascript"></script>
<title></title>
</head>
<body>
<div id="showdata"></div>
<input type="hidden" id="currentresult" value="1" />
<button id="show">Load</button>
<script type="text/javascript">
$(document).ready(function(){
$(document).on('click','#show',function(e){
var pageno = $('#currentresult').val();
$.get("getajax.php","page="+pageno ,function(data){
pageno++;
$('#currentresult').val(pageno);
$('#showdata').append(data);
});
});
});
</script>
</body>
</html>
和getajax.php
<!-- This is ajax data. -->
<?php
$con = mysqli_connect("localhost", "root", "", "maroon5");
$page=isset($_GET["page"])?$_GET["page"]:0;
$pageNo = $page;
$startLimit = ($pageNo-1)*2;
$query = "SELECT * from tour LIMIT $startLimit,2 ";
$result = mysqli_query($con,$query);
var_dump($result);
while($row = $result -> fetch_assoc()){
?>
<div>
<h4>
month:<?php echo $row["month"]; ?>day:<?php echo $row["day"]; ?>
</h4>
</div>
<?php
}
?>
答案 0 :(得分:0)
$.get("getajax.php","page=1" ,function(data){
工作的原因是因为它总是向你的php发送1,因此创建了SELECT * from tour LIMIT 0,2
但是,如果您要更改为$.get("getajax.php","page="+pageno ,function(data){
,则会在每次点击按钮时动态增加页面pageno
,从而为数据库创建不同的查询,如:
first click: "SELECT * from tour LIMIT 0,2"
second click: "SELECT * from tour LIMIT 2,2"
third click: "SELECT * from tour LIMIT 4,2"
正如您所看到的,第二次或第三次点击会有所不同。不完全确定,但这很可能是你的情况。其中一个查询未找到任何结果,因此将错误抛在fetch_assoc()
答案 1 :(得分:0)
尝试使用mysqli_error函数获取真正的错误
positive look ahead
答案 2 :(得分:0)
如果您的网页0
,那么startLimit
将是-2
在这里添加一些逻辑
$startLimit = ($pageNo-1)*2;
if($startLimit < 0)
{
$startLimit = 0;
}
应该工作!虽然不是完美的解决方案,但会起作用