Php AJAX重复函数调用
当用户点击一些导航链接时,我有一个AJAX调用。调用将更新页面的内容,URL将更新到存储内容的资源的相应链接 我的问题是,用户单击链接的次数越多,“swapContent()”函数在每次单击时被递归调用的次数就越多 例如,如果我单击“第2页”的链接,函数将被调用一次,然后如果我单击返回主页,函数将被调用2或3次,依此类推 有人能指出为什么会这样吗Php AJAX重复函数调用,php,html,ajax,Php,Html,Ajax,当用户点击一些导航链接时,我有一个AJAX调用。调用将更新页面的内容,URL将更新到存储内容的资源的相应链接 我的问题是,用户单击链接的次数越多,“swapContent()”函数在每次单击时被递归调用的次数就越多 例如,如果我单击“第2页”的链接,函数将被调用一次,然后如果我单击返回主页,函数将被调用2或3次,依此类推 有人能指出为什么会这样吗 function supports_history_api() { return !!(window.history && his
function supports_history_api() {
return !!(window.history && history.pushState);
}
function swapContent(href) {
var req = new XMLHttpRequest();
req.open("GET",
"http://localhost/portfoliowebsite/PHP/" +
href.split("/").pop(),
false);
req.send(null);
if (req.status == 200) {
document.getElementById("homeContBox").innerHTML = req.responseText;
setupHistoryClicks();
return true;
}
return false;
}
function addClicker(link) {
link.addEventListener("click", function(e) {
if (swapContent(link.href) == true) {
history.pushState(null, null, link.href);
e.preventDefault();
}
}, true);
}
function setupHistoryClicks() {
addClicker(document.getElementById("home"));
addClicker(document.getElementById("cv"));
addClicker(document.getElementById("port"));
addClicker(document.getElementById("contact"));
}
window.onload = function() {
if (!supports_history_api()) { return; }
setupHistoryClicks();
window.setTimeout(function() {
window.addEventListener("popstate", function(e) {
alert("");
swapContent(location.pathname);
}, false);
}, 1);
}
setupHistoryClicks()中存在问题: addClicker(link)不断添加事件侦听器,因此每次加载内容时,您都会向链接添加更多执行
因此,您将执行更多的单击。这是一个旧线程,但我很好奇您是如何找到它的。我认为您的问题是因为无论来自
req.responseText
的是什么,它都不包含home、cv、port和contact元素,而addClicker就是应用这些元素的。