【发布时间】:2017-05-15 12:05:22
【问题描述】:
最近我使用 php 和 jquery 开发了一个加载更多的功能。请看我的代码
HTML
<div class="container clearfix product-output">
</div>
jQuery
$.ajax({
method: "POST",
url: "result.php",
data: { keyword:"all"}
}).done(function( msg ) {
$( ".product-output" ).html(msg);
$(".load-more").on("click",function(){
var load_num= $('.load-more').length;
var appear=[];
$(".im-product-block").each(function(){
appear.push($(this).attr('id'));
});
$.ajax({
method: "POST",
url: "result.php",
data: { keyword: "all", y_id: appear, load_num: load_num }
}).done(function(msg1){
$('.load-more-div').before(msg1);
if($(".hide-load").val()==1){
$(".load-more").hide();
}
});
});
});
在result .php我写了数据库连接代码和下面的查询。
$query = 'SELECT * FROM `product` ORDER BY id DESC LIMIT 15';
$query_1 = 'SELECT * FROM `product` ORDER BY id DESC';
if (ISSET($_POST['y_id'])) {
$appear = implode("', '", $_POST['y_id']);
$query = "SELECT * FROM `product` WHERE id NOT IN('{$appear}') ORDER BY id DESC LIMIT 15";
$query_1 = "SELECT * FROM `product` WHERE id NOT IN('{$appear}') ORDER BY id DESC";
}
$result = $conn->query($query);
$result_1 = $conn->query($query_1);
$total_num = $result_1->num_rows;
echo '<div class="container clearfix product-output">';
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) { ?>
<div class="col-sm-2 im-product-block" id="<?php echo $row["id"]; ?>">
<p class="product-name"> <?php echo $row["name"]; ?></p></div>
<?php }
echo '</div>';
if ($total_num > 15 && $_POST[load_num] == 0) {
echo '<div class="load-more-div"><p class="load-more"> Load More</p></div>';
}
if ($total_num < 15) {
echo '<input type="hidden" name="hide-load" class="hide-load" value="1">
<div class="load-finished"><p class="load-f"> All Products Loaded Successfully</p></div>';
}
}
所有这些功能都运行良好。但不是点击加载更多按钮,当用户向下滚动加载更多时,它需要自动获取产品而不点击。
为此我使用以下代码
$(window).scroll(function() {
var hT = $(".load-more").offset().top,
hH = $(".load-more").outerHeight(),
wH = $(window).height(),
wS = $(this).scrollTop();
if (wS > (hT+hH-wH)){
$(".load-more").trigger("click");
}
});
但是这里的执行是无限的。它没有停止。请检查此代码并提出一个好的方法
【问题讨论】:
-
您在哪里放置了更多代码。我的问题类似,但不知道在哪里放置答案。谢谢你。请帮忙
-
请仔细阅读这一行 if ($total_num > 15 && $_POST[load_num] == 0) { echo ''; } if ($total_num
加载更多
'; }所有产品加载成功
-
感谢您的回复。我在问你接受的答案放在哪里。请问你是怎么换的。再次感谢您的回复
-
您是如何将您接受的答案与上面的代码集成以使用 ajax。我有更多手动工作的负载,但希望在滚动时自动执行
-
您能否将 $(".load-more").on("click",function(){ ... } 替换为选定的答案。
标签: javascript php jquery function pagination