Javascript 如何在页面加载完成时发出AJAX请求,该请求由window.location.href触发
我有一个这样的事件监听器Javascript 如何在页面加载完成时发出AJAX请求,该请求由window.location.href触发,javascript,jquery,html,ajax,dom,Javascript,Jquery,Html,Ajax,Dom,我有一个这样的事件监听器 function navBtn() { $('#navBtn').on('click', (event) => { window.location.href = 'someotherfile.html'; myAJAXrequest(); }) } 问题似乎是,由于事件侦听器是一个点击,它们都会被触发。但是当我被发送到另一个页面时,AJAX请求从未发生过。不知道如何通过单击按钮重定向到另一个页面,当该页面包含使用AJAX调用添加的内容时,不会发生
function navBtn() {
$('#navBtn').on('click', (event) => {
window.location.href = 'someotherfile.html';
myAJAXrequest();
})
}
问题似乎是,由于事件侦听器是一个点击,它们都会被触发。但是当我被发送到另一个页面时,AJAX请求从未发生过。不知道如何通过单击按钮重定向到另一个页面,当该页面包含使用AJAX调用添加的内容时,不会发生这种情况。在触发AJAX之前,有没有办法检查我指向的新页面是否先加载?您可以使用setTimeout函数,它会将重定向延迟一段时间,在这段时间内,您的AJAX将被执行。下面是示例代码
function navBtn() {
$('#navBtn').on('click', (event) => {
myAJAXrequest();
setTimeout(function () {
window.location.href = 'someotherfile.html';
}, 3000)
})
}
这里我给出了3秒的延迟,您可以随意增加或减少延迟。尝试使“myAJAXrequest()”函数异步
async function myAJAXrequest(){};
function navBtn() {
$('#navBtn').on('click', (event) => {
await myAJAXrequest();
window.location.href = 'someotherfile.html';
})
}
为什么不先运行ajax调用,然后重定向到回调中的新页面?
myAJAXrequest
永远不会被调用,因为加载了新文档。即使在加载新页面之前调用它也无济于事,在这种情况下,挂起的AJAX调用将被取消(除非您在AJAX回调中重定向)。有关可能的解决方案,请参阅。能否共享myAJAXrequest()
的外观?我们也许能够为您提供一些指导,告诉您如何重新构造代码,以使其满足您的需要。