响应后,Javascript不会立即重定向

时间:2017-11-22 22:48:26

标签: javascript php jquery ajax

嗨,如果收到来自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脚本完成

1 个答案:

答案 0 :(得分:-1)

分配给window.location.href不会导致立即重定向,只有在Javascript返回主事件循环时才会看到效果。这允许您在重定向之前执行其他处理,包括重新分配位置以更改您重定向到的位置。 E.g。

window.location.href = "/page1";
window.location.href = "/page2";

将重定向到/page2,因为这会覆盖之前的分配。

相关问题