在这个程序中,我正在创建一个标题设置为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。请告诉我这背后的问题是什么。
答案 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