我在我的网站中使用javascript滚动分页。当页面缩小时,某些项目将从数据库加载。问题在于,有时滚动分页会从数据库中获取相同的数据。我使用了async: false
。但是,它减慢了加载速度。
JavaScript代码:
if (check !== null) {
$(window).scroll(function(ev) {
if ($(window).scrollTop() + window.innerHeight >= $('#footer').offset().top) {
var last_id = $(".item:last").data("id");
loadData(last_id);
};
});
}
var dataCount = 1;
function loadData(last_id) {
$.ajax({
url: 'some/url/loader',
type: "get",
data: {
id: last_id
},
// async: false,
success: function(data) {
if (data) {
dataCount++;
$('#div').append(data);
check = 1;
} else if (!data) {
console.warn('no data');
check = null;
}
}
});
}
控制器中的Loader方法:
public function actionLoader() {
$id = $_GET['id'];
$cat_id = $_GET['cat_id'];
$posts = SomeModel::getItems($id);
if (!empty($posts)) {
$q = $this - > renderPartial('view', array('data' => $posts));
echo $q;
}
}