Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php jquery重定向中的POST变量,但未设置_Php_Jquery_Redirect_Post_Isset - Fatal编程技术网

Php jquery重定向中的POST变量,但未设置

Php jquery重定向中的POST变量,但未设置,php,jquery,redirect,post,isset,Php,Jquery,Redirect,Post,Isset,我最近问了一个问题,关于将jquery中的POST变量发送到另一个php页面、重定向到该页面、使用发送的信息执行一些操作,以及重定向原始页面 我在寻求几乎完全相同的代码的帮助,因为对它发表评论的人只回答了我问题的一半,并将其标记为重复。虽然它确实有帮助,但并没有解决问题 我已经根据上一次尝试解决此问题时提出的建议进行了编辑。正如您将看到的,点击本例中的save按钮将使您进入changePage.inc.php,这是第一个重定向,但第二个重定向没有发生,这将使您进入secondPage.php 名

我最近问了一个问题,关于将jquery中的POST变量发送到另一个php页面、重定向到该页面、使用发送的信息执行一些操作,以及重定向原始页面

我在寻求几乎完全相同的代码的帮助,因为对它发表评论的人只回答了我问题的一半,并将其标记为重复。虽然它确实有帮助,但并没有解决问题

我已经根据上一次尝试解决此问题时提出的建议进行了编辑。正如您将看到的,点击本例中的save按钮将使您进入changePage.inc.php,这是第一个重定向,但第二个重定向没有发生,这将使您进入secondPage.php

名为index.php的文件

名为includes文件夹中名为changePage.inc.php的文件

名为secondPage.php的文件

jQuery$.post方法被称为异步调用。这意味着,$.post尝试执行时,它后面的任何代码行都将尝试执行

请注意,您将在$.post之后立即重定向。这意味着,$.post尝试运行时,您正在重定向到includes/changePage.inc.php,这可能会阻止php重定向到../secondPage.php的运行。这就是我们所说的比赛条件,两个项目同时进行,其中一个可以在另一个之前完成,而无法保持项目同步

据我所知,您真正想要做的是将数据处理交给PHP,然后在完成后,您希望重定向到给定的页面

如果我的回答正确,那么删除window.location.href=includes/changePage.inc.php;因为否则你总是会遇到这个比赛条件的问题。在PHP中处理重定向,它应该自己工作。如果在PHP中直接重定向时遇到问题,则可以通过jQuery进行重定向:

你的jQuery帖子

通过PHP返回什么


如果这不能满足您的需求,那么您需要坐下来更好地解释您的用例和意图。如果您不能很好地解释它,以便准确地传达您想要的内容,那么您可能没有完全掌握需要解决的问题。

changePage.inc.php的代码在哪里?很抱歉,应该是changePage.inc.php而不是changeditory.inc.php。我将进行编辑。请问,在提交之前,您为什么要以任何方式格式化信息?您可以在目标页面中执行此操作,例如changePage.inc.php。这样就可以完全避免jquery部分。secondPage.php与includes/saveassession.inc.php是否相同?您没有提到includes/saveassession.inc.phpanywhere。您对这两个问题的解释都令人困惑,因为您指的是您自己的解决方案,这似乎不是一个平滑的解决方案。所以,如果您想要一个可靠的解决方案,请接受我的建议:忘记jquery,忘记php。只需用语言描述您的确切问题和您想要完成的工作流程。但是在您的描述中,尽可能多地使用页面名称,而不是像includes文件夹中php文件中的页面那样,因此我不想使用jquery重定向。谢谢
<?php
    session_start();
?>

<!DOCTYPE html>
<html>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"
    integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
    crossorigin="anonymous">
</script>
<script>
    $(document).ready(function(){
        $('#saveForm').submit(function(event){
            event.preventDefault();
            var message = "";

            var changeText = function(){
                message = "You wrote: " + $('#text').val();
            };

            var send = function(){
                if(message !== ""){
                    $.post("includes/changePage.inc.php", {message: message});
                    window.location.href = "includes/changePage.inc.php";
                }
            };

            changeText();
            send();
        });
    });
</script>
<body>
<textArea id="text"></textArea>
<form id="saveForm" action="includes/saveEssay.inc.php" method="POST">
  <button type="submit" id="saveButton">Save!</button>    
</form>
</body>
</html>
<?php

session_start();

if(isset($_POST['message'])){
    header("Location: ../secondPage.php");
}

exit();
<?php
    echo 'Hello World';
?>
$.post("includes/changePage.inc.php", {message: message}, function(data) {
    var obj = $.parseJSON(data);
    window.location.href = obj.redirect_url;
});
echo json_encode(array('redirect_url'=>'includes/secondPage.php'));