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

当点击一个按钮时,执行函数f。上面的代码可以正常运行,实现想要的功能。但是当代码变成如下格式时:

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

ajax请求将不起作用。我知道它与Javascript加载顺序有关,但我想在深层次上说清楚。很高兴你能帮助我并详细解释它。谢谢!

4

1 回答 1

2

当你有

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

第二行在第一行执行后立即执行。但是第一条语句只启动ajax 请求,它不会阻塞,直到浏览器真正将整个请求发送到服务器。

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

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

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

window.location仅当浏览器收到答案时才进行更改。

于 2013-07-22T12:02:17.257 回答