我承认我对完整的ajax网站很不错,所以我肯定犯了一些错误。
问题在于: 在http://lamovida.arabianessence.com
每个页面都使用此函数加载$ .ajax调用
function getAjaxPage() {
$('a.ajaxc').click(function() {
$("li.page_block").find(".wrapper").fadeOut(400).remove();
hideSplash();
var $thishref = $(this).attr('href'),
$thisurl = $thishref.replace("#!/",""),
$urlArr = $thisurl.split('-'),
$urlOk = $urlArr[0],
$dataOk = $urlArr[1];
$.ajax({
url : $urlOk + ".php",
data : 'id='+$dataOk,
success : function (data,stato) {
$("#content").css({opacity:1}).fadeIn(400);
$("li.page_block").html(data);
$("li.page_block").css('visibility', 'visible');
$("li.page_block").find(".wrapper").css({opacity:0}).show().animate({opacity:1},1000);
var $whgt = $(".wrapper").height(),
$ctop = ( ( $(window).height() - $whgt ) /2 )-40;
$("#content").stop().animate({height: $whgt+40, top: $ctop},1000);
$("li.page_block").css('padding-top',20);
$('.scrollable').jScrollPane();
$('.slider>ul>li').jScrollPane();
getAjaxPage();
},
error : function (richiesta,stato,errori) {
alert(errori);
}
});
});
}
每次调用此函数时,内容都会使加载程序变慢,并且在大约20次单击后,事情变得非常糟糕,加载时间也会增长和增长。
我尝试使用Google Chrome的时间轴分析情况,我看到每次点击后浏览器都会占用更多内存。如果我评论getAjaxPage();排在“成功”部分的情况开始变得更好,但当然我失去了所有的内部导航。
我该怎么做才能避免这个问题?
非常感谢所有人!
答案 0 :(得分:2)
对$('a.ajaxc').click()
的每次调用都是添加新的事件处理程序,因此每次点击都会导致发出更多请求。第一次单击后,每次单击都会导致两个请求。再次点击?另外三个要求。等
将处理程序放在函数外部,每次单击只有一个AJAX调用:
$(document).ready(function() {
$('a.ajaxc').click(getAjaxPage);
});
我也没有看到在回调中再次调用getAjaxPage
的原因,所以也要删除它以避免无限循环的请求。