Javascript Dom中Jquery的Js代码和ajax请求的加载顺序

Javascript Dom中Jquery的Js代码和ajax请求的加载顺序,javascript,jquery,Javascript,Jquery,单击按钮时,执行函数f。上述代码可以正确运行并实现所需的功能。但当代码更改为以下格式时: function f(){ $.post('1.php',{},function(){window.location.href="../../2.php";}); } ajax请求将不起作用。我知道这与Javascript加载顺序有关,但我想在深层次上说清楚。非常感谢您帮助我并详细解释。谢谢 当你有 function f(){ $.post('1.php',{},function(){}); window

单击按钮时,执行函数f。上述代码可以正确运行并实现所需的功能。但当代码更改为以下格式时:

function f(){
$.post('1.php',{},function(){window.location.href="../../2.php";});
}
ajax请求将不起作用。我知道这与Javascript加载顺序有关,但我想在深层次上说清楚。非常感谢您帮助我并详细解释。谢谢

当你有

function f(){
$.post('1.php',{},function(){});
window.location.href="../../2.php";
}
第二行在第一行执行后立即执行。但是第一条语句只启动ajax请求,在浏览器真正将整个请求发送到服务器之前,它不会阻止ajax请求

当第二行替换页面时,它也会停止脚本并告诉浏览器它可以停止对页面执行的操作,比如查询服务器

解决方案是您在第一个代码中拥有的:

$.post('1.php',{},function(){});
window.location.href="../../2.php";

窗口。位置
更改仅在浏览器收到答复时进行

我想我已经明白了这一点,但仍然有一些困惑。在我的例子中,服务器在发送ajax请求后向数据库中插入了一些日期,但在第二个代码段中,我的数据库中没有任何内容,也就是说服务器没有响应请求。所以回到上面的Answer,这是因为window.loaction执行时浏览器尚未发送请求吗?因为我认为,如果发送了请求,则应在某个日期插入db。希望得到您的答复。脚本要求浏览器发送,这不是即时的,而是在另一个浏览器线程中发生的,然后就告诉浏览器停止一切。可能什么都没做。啊哈,我明白了,这解释了问题。非常感谢!
$.post('1.php',{},function(){window.location.href="../../2.php";});