所以我有一个脚本,可以从数据库中提取数据并在用户接近页面底部时显示它。
问题:
当用户到达底部时,脚本应该只返回一个帖子,但实际上,正在发出多个请求,导致所有帖子都被快速从数据库中提取,这反过来又以错误的方式返回它们命令。
我的问题是,有没有人知道如何阻止它失控并防止垃圾邮件?
Note:
我不打算在 AJAX 请求发出后就完全切断它,因为这个脚本是一个“无限滚动”,当用户到达底部时,它会从数据库中一篇一篇地拉取文章。
预先感谢,里奇。
$(document).ready(function() {
$(window).scroll(function() {
if($(window).scrollTop() + $(window).height() > $(document).height() - 200) {
$('div#loadMoreArticles').show( function(){
$.ajax({
url: "loadMoreArticles.php?lastArticle="+ $(".postedArticle:last").attr('id') ,
success: function(html) {
if(html){
$("#postedArticle").append(html);
$('div#loadMoreArticles').hide();
} else {
$('div#loadMoreArticles').replaceWith("<p>There are no more articles.</p>");
}
}
});
});
}
});
});
希望这可以帮助
$(document).ready(function() {
var AjaxRequestOn;
$(window).scroll(function() {
if ($(window).scrollTop() + $(window).height() > $(document).height() - 200) {
$('div#loadMoreArticles').show(function() {
if (!AjaxRequestOn) {
AjaxRequestOn = $.ajax({
url: "/",
success: function(html) {
}
});
}
});
}
});
});
只需使用一个变量来设置ajax请求,当设置第一个ajax时,如果用户再次向上滚动并向下滚动,那么该变量就有一些值,所以我们不应该再次调用(在ajax调用之前检查是否循环)。如果变量未定义,那么我们必须调用服务器。因此这只会导致对服务器的一次调用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)