【发布时间】:2016-08-16 19:54:58
【问题描述】:
我在我的项目中使用无限滚动。首先,它将从 MySQL 数据库中获取少量记录并显示在页面上。一旦页面向下滚动,它就会对服务器进行 ajax 查询并加载更多数据。
是否可以一次从 mysql 数据库中以 json 格式获取所有数据,然后在客户端执行更多加载。所以,基本上我不想向数据库发出 ajax 请求。
如果我在页面滚动上发出 ajax 请求,这里的代码可以正常工作。
flag = true;
$(window).scroll(function() {
if($(window).scrollTop() + $(window).height() == $(document).height()){
first = $('#first').val();
limit = $('#limit').val();
no_data = true;
if(flag && no_data){
flag = false;
$('#loader').show();
$.ajax({
url : 'ajax_html.php',
method: 'post',
data: {
start : first,
limit : limit
},
success: function( data ) {
flag = true;
$('#loader').hide();
if(data !=''){
first = parseInt($('#first').val());
limit = parseInt($('#limit').val());
$('#first').val( first+limit );
$('#timeline-conatiner').append( '<li class="year">'+year+'</li>');
$('#timeline-conatiner').append( data );
year--;
}else{
alert('No more data to show');
no_data = false;
}
},
error: function( data ){
flag = true;
$('#loader').hide();
no_data = false;
alert('Something went wrong, Please contact admin');
}
});
}
}
});
【问题讨论】:
-
当然你只是把它作为一个大的 javascript 数组存储在一个变量中,然后在上面使用像 slice 这样的东西。 w3schools.com/jsref/jsref_slice_array.asp 我个人认为 ajax 是更好的选择,但是你需要做一个组合,所以说你显示 25 个结果,拉 50 个显示 25 然后当他们滚动显示接下来的几个但做更多的 ajax,基本上有一个缓冲区你不显示的数据。然后你不需要在回调中等待显示更多记录,因为你手头总会有一些额外的。
-
@ArtisiticPhoenix 它会很有帮助。如果你展示一个例子
标签: javascript php jquery ajax