【问题标题】:Javascript redirect doesn't work immediately on PHP process finishJavascript 重定向不会在 PHP 进程完成后立即生效
【发布时间】:2017-11-22 05:01:50
【问题描述】:

您好我只是想知道为什么我的 javascript 重定向在我的 php 响应后不能立即工作?这是场景, 1. 我正在向我的 php 脚本发送一个发布请求。 2. 然后我的 php 脚本处理这个并返回一个字符串“ok”以标识该过程已完成(但我的脚本正在执行一个需要太长时间的后台进程)。 3. 如果字符串没问题,我会将用户重定向到确认页面。但是在返回“ok”字符串后,我的重定向不会立即生效,它似乎仍在等待 PHP 进程完成。下面是我的代码

<?php 
    $success = $payment->do_payment();
    if (!$success) {
       throw new Exception("error on payment");
    }      

    set_time_limit(0);
    ignore_user_abort(true);
    header("Connection: close\r\n");
    header("Content-Encoding: utf-8\r\n");
    ob_start();

    echo "ok";  // This return to the frontend immediately

    $size = ob_get_length();
    header("Content-Length: {$size}", true);
    ob_end_flush();
    ob_flush();
    flush();
    // Below this line is a long php process that takes almost a minute
    $this->veryLongProcessRunningOnBackground();

这是我的 jquery 请求

function payment_do_payment(token){
    $.ajax({
        url: '/payment',
        data:{
            mydata: "The data"
        },
        success: function(txt){
            if (txt == "ok"){
                console.log("done redirecting now");
                window.location.href = "/confirmation-page";
            }else{
                alert("Failed to process");
            }
        },
        type: 'POST'
    });
}

【问题讨论】:

    标签: javascript php jquery apache


    【解决方案1】:

    您需要使用类似于套接字连接的东西来执行此操作。

    也许this post 会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-13
      • 2011-05-05
      • 1970-01-01
      • 1970-01-01
      • 2016-11-01
      • 1970-01-01
      • 2012-05-20
      相关资源
      最近更新 更多