生成不再记录消息

时间:2018-02-15 01:13:41

标签: php jquery ajax

所以我有这个脚本,当你按下一个按钮它会加载更多的记录,所以我想添加一条消息,说明一旦你无法加载任何更多的记录就没有更多的记录,所以我该怎么做?

这是我的代码

的index.php

<!DOCTYPE html>
<html>
<head>
<style>

#load-more-button {
width: 100px;
margin: auto;
display: block;
}

.results-container {
width: 350px;
margin: auto;
}

</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>        
<script type="text/javascript">
$(document).ready(function (){

/*<load more by pressing a button script>*/

//<settings define
var start = 0;
var limit = 10;
var reachedMax = false;
//

//Call the ajax request on page load
getData();
//

//load more records by pressing a button
$('#load-more-button').click(function(){
getData();
});
//

/*<function>*/
function getData() {
if (reachedMax)
return;

//settings variable
var settings = {
getData: 1,
start: start,
limit: limit
};
//

//result variable
var result= function(response) {
if (response == "reachedMax"){
reachedMax = true;
}
else {
start += limit;
$(".results-container").append(response);
}
}
//

//request
$.ajax({
url: 'data.php',
type: 'POST',
dataType: 'text',
data: settings,
success: result 
});
}
/*</function>*/
/*</load more by pressing a button script>*/

});
</script>
</head>
<body>

<div class="results-container"></div>
<button id='load-more-button'>Load more</button>
</body>
</html>

data.php

<?php
$servername='localhost';
$username='x';
$password='1234';
$db_name= 'x';

$connect = new mysqli($servername,$username,$password,$db_name);

$start = $connect->real_escape_string($_POST['start']);
$limit = $connect->real_escape_string($_POST['limit']);

$query = "SELECT*FROM user_details LIMIT $start, $limit";

$result= $connect->query($query);

?>
<style>
#number{
background-color: gold;
color: black;
border-radius: 100%;
padding: 5px;
}

h2{
display: inline-block;
}

</style>

<?php while($row = $result->fetch_assoc()) { ?>

<h2 id='number' ><?php echo $row['user_id']; ?></h2>
<h2><?php echo $row['username']; ?></h2>
<p><?php echo $row['password']; ?></p>

<?php } ?>

我用Google搜索,我花了一个星期的时间来讨论这个问题,但我仍然无法理解这一点。

1 个答案:

答案 0 :(得分:0)

检查PHP中返回的行数:

$result= $connect->query($query);
if ($result->num_rows == 0) {
    echo "reachedMax";
    exit;
}
顺便说一下,逃避$start$limit毫无意义,它们不是字符串。使用intval()强制他们成为数字。

$start = intval($_POST['start']);
$limit = intval($_POST['limit']);

如果您想在Javascript中执行此操作而不是更改PHP,则只需检查结果是否包含任何<h2>标记。如果没有返回任何行,则循环将不会运行,并且不会返回任何这些元素。所以:

var result = function(response) {
  if (response.indexOf("<h2>") == -1) {
    reachedMax = true;
  } else {
    start += limit;
    $(".results-container").append(response);
  }
}

最好的,最常用的方法是重新设计它,以便AJAX调用返回JSON而不是HTML。然后你可以检查JSON数组的长度。