Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在页面加载完成时发出AJAX请求,该请求由window.location.href触发_Javascript_Jquery_Html_Ajax_Dom - Fatal编程技术网

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()
的外观?我们也许能够为您提供一些指导,告诉您如何重新构造代码,以使其满足您的需要。