所以我有这个脚本,当你按下一个按钮它会加载更多的记录,所以我想添加一条消息,说明一旦你无法加载任何更多的记录就没有更多的记录,所以我该怎么做?
这是我的代码
的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搜索,我花了一个星期的时间来讨论这个问题,但我仍然无法理解这一点。
答案 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数组的长度。