<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'页面上将'message'写入div#messageBox。 TY
答案 0 :(得分:2)
基于@james emanon的回复,我能够得到更适合我的东西。他确实以一种很好的方式回答了我提出的问题,所以他得到了他的'checK'。我所做的是删除ajax调用并将PHP的最后几行更改为:
header ("Location: /FXCM/FXCM-Conversion.php?status=LO");
exit();
我想为什么当我可以在服务器端执行时,让jQuery使用参数追加url。 然后在JS中我这样做了:
var url = document.URL.split('status=')[1];
if(url == undefined) {
url = '';
}
if(url != ''){
var message = 'You are logged out';
$('#messageBox').show().removeClass('error').html('<ul><li>' + message + '</li></ul>');
}
经过一番思考,我认为这是要走的路。非常感谢上述所有帮助我思考和学习C&amp; P的人 - 这次我很感激!!! ...
答案 1 :(得分:1)
您必须在返回页面上执行此操作,而不是在当前页面上执行此操作。
通过查询字符串传递内容(例如?lo=1
表示注销),使用特定的注销页面,通过点击它,您知道只有通过单击注销(例如loggedout.php
)才能到达那里,或设置临时cookie,在returnedpage.php上读取,使用它来显示消息,并在一次性使用后删除cookie。这是我见过的三种方法。
答案 2 :(得分:1)
很抱歉,如果我不完全了解您的问题 - 但您在重定向之前控制日志,那么您可以从console.log中看到数据。然后重定向,并且数据在后续页面上消失。
#messageBox位于当前页面或重定向页面的哪个位置?
如果在当前页面上,您可能希望在此之后放置重定向:
$('#messageBox')。show()。html('
并为其添加一些延迟,以便用户可以在重定向之前看到该消息。
2如果您想在重定向的页面上发送消息,那么我的猜测是您必须在URL的末尾传递数据作为参数..
document.location.href='/returnedpage.php?thisData=' + data;
然后在重定向的页面上,获取“thisData”的名称/值对,然后显示它。
如果我完全偏离您的问题,请道歉。
要做数字#2 - 在后续页面上你可以做类似的事情:
*** caveat: this is JUST FOR THIS ONE USE CASE. I am assuming thisData is the ONLY param in the url.
在此页面中,只需执行此操作。
<div id="messageBox" display="none"></div>
<script>
var url = document.URL;
var dispData=url.split('thisData=')[1];
$('#messageBox').show().html(dispData );
</script>