[英]Infinite scrolling MySQL PHP jQuery
下面的代码显示了使用jQuery和php的无限滚动功能。 我有两个我似乎无法解决的问题...
我的第一个问题:我知道,这被称为“无限”滚动。 但是非常荒谬的是,向下滚动到页面底部时加载的内容实际上是“无限的”(重复出现,当我实际上不希望有任何重复的时候)。 我相信这与jQuery函数中的if语句有关。
这是jQuery部分:
jQuery.fn.portfolio_addon = function(addon_options) {
"use strict";
//Set Variables
var addon_el = jQuery(this),
addon_base = this,
img_count = addon_options.items.length,
img_per_load = addon_options.load_count,
$newEls = '',
loaded_object = '',
$container = jQuery('.image-grid');
$(window).scroll(function() {
if($(window).scrollTop() + $(window).height() == $(document).height()) {
$newEls = '';
loaded_object = '';
var loaded_images = $container.find('.added').size();
if ((img_count - loaded_images) > img_per_load) {
var now_load = img_per_load;
} else {
var now_load = img_count - loaded_images;
}
if ((loaded_images + now_load) == img_count) jQuery(this).fadeOut();
if (loaded_images < 1) {
var i_start = 1;
} else {
var i_start = loaded_images+1;
}
if (now_load > 0) {
// load more elements
for (var i = i_start-1; i < i_start+now_load-1; i++) {
loaded_object = loaded_object + '<div data-category="'+ addon_options.items[i].category +' " class="blogpost_preview_fw element '+ addon_options.items[i].category +'"><div class="fw_preview_wrapper"><div class="gallery_item_wrapper"><a href="'+ addon_options.items[i].url +'" ><img src="'+ addon_options.items[i].src +'" alt="" class="fw_featured_image" width="540"><div class="gallery_fadder"></div><span class="third_party_'+addon_options.items[i].thirdparty +'"></span><span class="third_party_mobile_'+addon_options.items[i].thirdparty_mobile +'"></span><span class="description_tag"><span class="actual_description">'+ addon_options.items[i].title +'</span></span> <span class="price_tag"><span class="actual_price">€ '+ addon_options.items[i].price +'</a></div><a href="'+ addon_options.items[i].url +'"><div class="grid-port-cont"><h6>'+ addon_options.items[i].title +'</h6><hr class="trennlinie"><span>'+ addon_options.items[i].description +'</span><hr class="trennlinie"><span>Preis: EUR '+ addon_options.items[i].price +'</span> · <span>Ort: '+ addon_options.items[i].postcode +' '+ addon_options.items[i].city +'</span></div></a></div></div></div></div>';
}
$newEls = jQuery(loaded_object);
$container.isotope('insert', $newEls, function() {
$container.isotope('reLayout');
});
}}
});
}
这是我的php的一部分:
<?php // load more on default
if($condition == true){
//connect to the database
//-select the database to use
$start1 = 40; // it starts at 40 because 40 items load when page loads
$limit1 = 20;
//-query the database table
$sql="SELECT * FROM table WHERE City LIKE '%".$featured."%' order by id limit $start1,$limit1";
//-run the query against the mysql query function
//-create while loop and loop through result set
//-assign &numrows variable
?>
<script>
items_set = [
{src : '<?php echo $row['imageURL']; ?>',
url : '<?php echo $row['URL']; ?>',
category: '<?php echo $row['DetailCategory']; ?>',
title : '<?php echo $row['Name']; ?>',
description : '<?php echo $row['Description']; ?>',
price : '<?php echo $row['Price']; ?>',
postcode : '<?php echo $row['Postcode']; ?>',
city : '<?php echo $row['City']; ?>',
thirdparty : '<?php echo $row['ThirdParty']; ?>',
thirdparty_mobile : '<?php echo $row['Thirdparty']; ?>'}
];
jQuery('#list').portfolio_addon({
load_count : <?php echo $numrows;?>,
items : items_set
});
</script>
<?php
}}
?>
这是我的第二个问题:我的数据库中正好有49个项目(行)。 如代码所示,页面加载时已经显示了40个。 现在,当我向下滚动页面(触发加载功能)时,仅显示6个新项目,而应显示9个(应使用我正在使用的查询调用所有49个项目)。 不知何故,似乎mysql-query甚至根本没有任何作用。
我真的很感谢您的帮助! 谢谢。
我希望我做对了:
一遍又一遍地加载相同的内容。
我认为这个问题是由于:
loaded_object = loaded_object + 'lots of more content';
在你的循环中。 您加载的对象每次都会附加到新内容的前面,然后附加到dom
您只想要您的:
loaded_object = 'lots of more content';
可以被加载..旧的东西已经在您的DOM中了,并且不需要成为“ loaded_object”的一部分
编辑:由于MarcB在您的问题下方未发表评论:您的select语句也一次又一次地获取相同的数据
我认为,没有ajax请求。 您需要发送一个ajax请求,该请求的偏移量为完成了多少帖子以及需要提取多少帖子。
请发表您的评论
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.