PHP中的标头无法正常工作

时间:2013-08-01 11:47:57

标签: php javascript jquery

在这个程序中,我正在创建一个标题设置为google.co.in的PHP文件。让我们看看代码

<?php
session_start();
$status=$_POST['input'];

    if (isset($status)) {

        header('Location: http://google.co.in/');
    } 

?>

我有另一个有javascript的文件,让我们来看看

<?php
session_start();
echo time();
?>

<html>
<head>
    <title>my app</title>
    <script type="text/javascript" src="jquery-2.0.2.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){
            $(this).mousemove(function(){

                $.post('logout.php',{input: 1});
                //window.location.href="logout.php"
            });
        });

    </script>
</head>
<body>
    <h2>we are on the main_session</h2>
</body>
</html>

现在的问题是,当我在我的localhost上运行时,我没有被重定向到google.co.in而是在firebug中显示302错误。但是当我使用window.location.href语法时,我在我的代码中评论过,而不是将其重定向到google.co.in。请告诉我这背后的问题是什么。

4 个答案:

答案 0 :(得分:0)

如果您想重定向执行使用
window.location.href="logout.php"或仅window.location="logout.php"

而不是$.post(),因为post会在window.location重定向时检索目标网页的内容!

答案 1 :(得分:0)

问题是$.post是一种AJAX方法,而不是重定向技术。很明显,当您需要从另一个页面获取任何内容而不是重定向时,会使用$.post。所以解决方案是使用window.location.href

答案 2 :(得分:0)

试试这个

SCRIPT:

$.post('logout.php',{input: 1} , function(res){
   location.href="logout.php";
});

PHP文件

<?php
session_start();
$status=$_POST['input'];

    if (isset($status)) {
        // destroy session or cookies
        // return true
    } 

?>

希望它会有所帮助

答案 3 :(得分:0)

我认为重定向不适用于ajax方法。由于您正在调用$ .post()ajax方法,因此它会发送XHR请求并等待服务器响应。更好的解决方案是在Java脚本中使用window.location。

有关详细信息,请参阅以下帖子 PHP header() called via AJAX not working properly