【发布时间】:2012-12-10 21:41:51
【问题描述】:
<a href="PHP/LogOut.php" id="LogOut">Log Out</a>
链接 a#LogOut 调用一个 PHP 脚本,该脚本结束所有会话并以“您已注销”的数据进行响应。
<?php
session_start();
$_SESSION = array();
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}
session_destroy();
echo "You have logged out";
?>
一切正常,除了一旦您注销并返回登录页面,“数据/消息”就不会被写入页面。我怀疑这是由于'document.location.href'。如果我放置一个“console.log(data)”,它会在控制台中闪烁一秒钟,然后在加载返回页面时消失。如何让它运行脚本、重定向和显示消息?
$('a#LogOut').live('click',function(){
$.ajax({
type: "POST",
url: $(this).attr('href'),
success: function(data){
var message = $(data).text();
if (data==="You have logged out") {
console.log( data );
document.location.href='/returnedpage.php';
$('#messageBox').show().html('<ul></li>' + data + '</li></ul>');
} else {
alert('not working');
}
}
});
return false;
});
我可以使用 .load 函数重新加载内容,但这让我很生气,我想把它做好。基本上,我需要将“消息”写入“returnedpage.php”页面上的 div#messageBox。 TY
【问题讨论】:
-
您根本无法重定向并期望数据仍然存在。一旦发生新的页面加载,所有数据都会丢失,保留它的唯一方法是将其存储在 cookie、本地存储、数据库中,或者将其作为 GET(查询字符串)或 POST 传递到下一页。既然你是用 ajax 来获取数据的,为什么不把数据存储在会话服务器端而不是返回它,然后在下一页检索它。