当PHP中进行Ajax调用时,如何从一个页面跳转到另一个页面?

3
如何在 PHP 中重定向到另一个页面后继续运行 ajax 调用?
如何在 PHP 中进行 Ajax 调用时从一个页面转到另一个页面?
我的 ajax 调用正在执行一个非常复杂的任务,需要很长时间。因此,是否可能在页面重定向后继续运行 ajax 调用?
我在“提交”按钮单击时进行 ajax 调用,然后页面重定向到另一个页面,然后我的 ajax 调用在后台继续运行。
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
  <title></title>
</head>
<body>
  <input type="text" name="altname" id="altname">
  <button id="btnSubmit">Submit</button>
</body>
</html>
<script type="text/javascript">
$(document).ready(function(){
    $(document).on('click','#btnSubmit',function(){ 
    var altname = $("#altname").val();
        $.ajax({
            url:"http://localhost/z/backend-queue-job-php/queue_job.php",
            type:"POST",
            data:{altname:altname},
            success:function(result)
            {   
                alert(result.msg);
            }
        });
        window.location.href = "http://localhost/z/backend-queue-job-php/thankyoupage.php";
    });
}); 
</script>
2个回答

2
更简单的在后台运行PHP脚本的方法是使用exec或shell_exec函数。
您可以在通过ajax调用的php文件中运行以下函数,传递当前脚本的路径和日志路径(如果需要存储日志信息):
shell_exec("/path/to/php /path/to/queue_job.php > /path_to_log/debug.log 2>&1");

shell_exec("/path/to/php /path/to/queue_job.php 'alert' > 在这种情况下,路径在哪里? - JD Savaj
你在问哪个路径?以上命令中所有路径都必须是绝对路径(不是URL)。 - prashant
您可以像以下链接所述获取 PHP 文件的绝对路径:https://dev59.com/OGgu5IYBdhLWcg3wEzHP - prashant
这不起作用,我试过了... 我的情况是在第一个脚本执行、加载页面、脚本完成后页面被重定向 所以,还有其他想法吗..! - JD Savaj

1

在您的PHP部分中,只能使用异步任务来完成。

  • 为每个任务分配一个ID
  • 您的ajax将创建新任务或获取现有任务的状态

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接