我有一个使用ajax进行分页的网站,页面系统根据hashchange事件工作,每当我想移动到另一个页面时,我调用一个函数将哈希值改为页码,当哈希改变了hashfla事件被触发并调用函数来获取页面数据。
但是,除了一件事情之外它完美无缺,如果我更改页面超过3-4次页面将无法响应并且会崩溃,我检查网络点击谷歌浏览器中的Inspect元素,我看到的是当我更改页面ajax请求的数量将加倍,传输的数据也将加倍,这将导致内存泄漏。
最后,我试图在没有hashchange的情况下进行分页,看看问题是否会得到解决,而且它就像魅力一样。
你可以请我做什么吗?提前致谢
hashchange事件
$(window).bind('hashchange', function () {
search(0);
});
changehash功能
function ChangeHash(p) {
window.location.hash = p;
}
页面按钮
$('#Pages').append("<button type='button' class='btn btn-default"+active+"' Onclick=\"ChangeHash(" + a + ")\">" + a + "</button>");
答案 0 :(得分:0)
您提供的代码并未显示,但很可能发生的是 每次xhr后您重新运行该绑定调用 即可。
因此,您无意中对事件进行了双重,三重,四重绑定 - 这正是网络日志显示的内容:haschange正在运行2,3,4,5 ...次,直到浏览器崩溃。
为避免这种情况,请确保
$(window).bind('hashchange', function () {
search(0);
});
只运行一次。