我有一个数据库,它有10多条记录:
Accid | Firstname | Lastname
1. John Marshall
2. Sherlock Holmes
3. Random Dude
...
我在php上使用echo显示这个但是使用AJAX ...它首先加载5个用户,当用户在页面底部滚动时,它将在列表中加载另外5个(它添加了偏移值+ = 5)。这是我的显示代码:
$sql = "SELECT * FROM users ORDER BY lastname DESC LIMIT 5 OFFSET 5";
$result = mysqli_query($connection,$sql);
While($row=mysqli_fetch_assoc) {
echo $row['lastname']." ".$row['firstname']."<br/>";
}
如果我有100个用户可以说,这个列表可能会很长。 只要用户在底部滚动,就会弹出另外5个用户。现在,如果我到达USERS数据库中的整个记录的末尾,我想显示类似的内容 - “用户列表结束”
我怎样才能做到这一点?
Jquery代码
$.ajax({
type: "GET",
url: "getusers.php",
data: {
'offset': 4
},
success: function(data){
$('#displayusers').append(data);
}
});
答案 0 :(得分:3)
我想不同意@PressingOnAlways的答案。
您可以从PHP发回不同的响应,并在javascript中进行检查。
$sql = "SELECT * FROM users ORDER BY lastname DESC LIMIT 5 OFFSET 5";
$result = mysqli_query($connection,$sql);
if(mysqli_num_rows($result) == 0){
die("last");
}
While($row=mysqli_fetch_assoc) {
echo $row['lastname']." ".$row['firstname']."<br/>";
}
现在你可以在javascript中查看它:
if(response == "last"){
mydiv.append('This is the end');
}
现在,我想向您展示我做事的方式,其中(imo)更清洁:
我们将确保从现在开始我们的数据将自动采用json格式:
$.ajax({
type: 'GET',
url: "getusers.php",
cache: false,
data: {'offset': 4},
dataType: "json"
}).done(function(json){
if(json.hasOwnProperty("last"){
//No more results
//do your thang;
return false;
}
if(getLength(json) < 5){
//Smaller then 5, must have hit the last. Do your thang;
return false;
}
//It came here, so it's all good. Go on
$('#displayusers').append(data);
});
从来没有一个好的计划来通过AJAX回应html。它比在PHP中更有效率(通过互联网高速公路占用较少的服务次数+发送少量数据)。
$sql = "SELECT * FROM users ORDER BY lastname DESC LIMIT 5 OFFSET 5";
$result = mysqli_query($connection,$sql);
$lastResponse = array("last" => "last");
if(mysqli_num_rows($result) == 0){
//Always send back json or it'll give you an error
die(json_encode($lastResponse));
}
$return = array();
While($row=mysqli_fetch_assoc) {
$return[] = $row['lastname']." ".$row['firstname'];
}
echo json_encode($return);
//Checks the length of a json object or array
//Returns false if length is 0 or unable to check it
function getLength(obj) {
if (typeof obj == 'undefined') {
return false;
}
var l = 0;
if (typeof obj == 'object') {
l = Object.keys(obj).length;
}
else {
l = obj.length;
}
return (l == 0 ? false : l);
}
答案 1 :(得分:0)
实现此功能的最佳位置是JS客户端。由于您的PHP脚本无法知道它是否是列表的末尾,您需要在客户端上执行此操作。 JS代码应检查从php脚本返回的结果是否小于5,如果是,那么&#34;用户列表结束&#34;应该打印出来。