0

在这个程序中,我正在制作一个标头设置为 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>

现在的问题是,当我在本地主机上运行它时,我没有被重定向到 google.co.in,而是在 firebug 中显示 302 错误。但是,当我使用我在代码中注释的 window.location.href 语法时,我被重定向到 google.co.in。请告诉我这背后的问题是什么。

4

4 回答 4

0

if you want to be redirected do use
window.location.href="logout.php" or simply window.location="logout.php"

instead of $.post() because post retrieves the content of the target webpage while window.location redirects you!

于 2013-08-01T11:52:13.120 回答
0

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

有关更多详细信息,请参阅以下帖子此处 通过 AJAX 调用的 PHP header() 无法正常工作

于 2013-08-01T12:09:46.657 回答
0

尝试这个

脚本:

$.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
    } 

?>

希望它会有所帮助

于 2013-08-01T12:04:36.083 回答
0

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

于 2013-08-01T11:59:43.363 回答