Ajax 使用hashchange事件时的慢度

Ajax 使用hashchange事件时的慢度,ajax,paging,hashchange,Ajax,Paging,Hashchange,我有一个使用ajax进行分页的网站,页面系统根据hashchange事件工作,每当我想移动到另一个页面时,我调用一个函数将哈希值更改为页码,当哈希值更改时,触发hashchange事件并调用一个函数来获取页面数据。 但是,它工作得很好,除了一件事,如果我更改页面超过3-4次,页面将不会响应并崩溃,我检查google chrome中Inspect元素中的网络点击,我看到的是,当我更改页面时,ajax请求的数量将翻倍,传输的数据也将翻倍,这将导致内存泄漏。 最后,我尝试在不改变hashchange的

我有一个使用ajax进行分页的网站,页面系统根据hashchange事件工作,每当我想移动到另一个页面时,我调用一个函数将哈希值更改为页码,当哈希值更改时,触发hashchange事件并调用一个函数来获取页面数据。 但是,它工作得很好,除了一件事,如果我更改页面超过3-4次,页面将不会响应并崩溃,我检查google chrome中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>");

您给出的代码没有显示它,但最有可能发生的情况是,在每次xhr之后,您都在运行绑定调用

因此,您无意中对事件进行了双重、三重、四重绑定—这正是网络日志显示的:haschange正在运行2,3,4,5。。。直到浏览器崩溃

要避免这种情况,请确保

$(window).bind('hashchange', function () {
search(0);
});
只运行一次