嗨,如果收到来自ajax请求的响应,我正在尝试重定向。但不知何故, windows.href.location 在PHP后台进程处理完成之前不会重定向。以下是我的代码
// The php script that run the background process
<?php
$background = new BackgroundProcess('email.php');
$background->run(); // The background process is running now
return $background->getPid(); // This returns immediately to the frontend
?>
这是我使用jquery的ajax请求
$.ajax({
url: '/payment',
data:form.serialize(),
dataType: 'json',
success: function(txt){
if (txt.response == "ok"){
console.log("done redirecting now");
window.location.href = "/confirmation";
}else{
alert("failed process");
}
},
type: 'POST'
});
现在完成重定向在控制台上打印。意味着收到了答复。但我希望执行下一行是 windows.href ,但直到我的php脚本中的后台进程完成后才会执行。关于如何解决这个问题的任何想法?
注意:PHP进程正在按预期运行,只是javascript重定向不会立即重定向并等待php脚本完成
答案 0 :(得分:-1)
分配给window.location.href
不会导致立即重定向,只有在Javascript返回主事件循环时才会看到效果。这允许您在重定向之前执行其他处理,包括重新分配位置以更改您重定向到的位置。 E.g。
window.location.href = "/page1";
window.location.href = "/page2";
将重定向到/page2
,因为这会覆盖之前的分配。