$ .get无法将数据传递给php文件

时间:2017-03-12 02:04:59

标签: php jquery mysql ajax

当我使用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
}
?>

3 个答案:

答案 0 :(得分:0)

$.get("getajax.php","page=1" ,function(data){工作的原因是因为它总是向你的php发送1,因此创建了SELECT * from tour LIMIT 0,2

的sql查询

但是,如果您要更改为$.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;
}

应该工作!虽然不是完美的解决方案,但会起作用