【发布时间】:2018-11-29 23:20:26
【问题描述】:
我有一个网站,主页上有一个内容 div,并且正在使用 ajax 切换内容。每次我在不同页面之间切换时,在我看来,ajax 都会不断发出双倍的请求。下面是处理页面切换的代码:
$(document).on('click','#sideNav a',function(e){
e.preventDefault();
var url = $(this).attr('href'); //get the link you want to load data from
$.ajax({
type: 'GET',
url: url,
success: function(data) {
$("#content").empty();
$("#content").html(data);
}
});
//window.history.pushState('object', 'New Title', url);
});
});
现在假设我切换到我的模板页面,它显示创建的模板并让我创建模板。
现在我第一次切换到这个页面并创建一个新模板一切都很好,一个帖子被发送到 php,一个新条目被写入数据库。现在,如果我在页面之间切换并返回到我的模板页面并创建一个新模板,那么只有这一次 ajax 向 php 发布了两个帖子并创建了 2 个数据库条目,现在如果我再这样做一次,则 4 个帖子很疯狂,依此类推。
每个使用 ajax 的函数都会发生这种情况。当我单独进入模板页面而不是通过带有内容 div 的主页时不会发生这种情况,所以我怀疑我切换页面的方式有些混乱。
编辑:实际上不是加倍,而是每次添加一个请求。
更新
我以某种方式修复了它,不完全确定如何修复它,但这是我所做的事情:我将 .off('click','#sideNav a') 添加到我的函数中,并且我还将函数放入单独的 .js 文件中。我觉得它每次都在重新加载脚本,再次不确定到底是什么修复了它,希望它对某人有所帮助。
【问题讨论】:
-
听起来你一直在多次加载同一个脚本。我认为您的表现不足以解决问题,
-
@charlietfl 我也在想同样的事情,但似乎找不到任何暗示我继续加载相同脚本的东西,对不起,我只是不知道还能发布什么它更清晰。
-
内容模板中是否存在相同的脚本?
-
@charlietfl 我很确定这是问题所在,虽然我删除了一次脚本并尝试过,但问题仍然存在,但也许只是我很愚蠢,没有清除缓存或其他什么。跨度>
标签: javascript jquery ajax