0
<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。泰

4

3 回答 3

2

根据@james emanon 的回复,我能够得到更适合我的东西。他确实很好地回答了我提出的问题,所以他得到了他的“检查”。我所做的是删除 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&P——这次我很感激!!!

于 2012-12-11T02:14:08.817 回答
1

您必须在返回的页面上执行此操作,而不是在当前页面上。

要么通过查询字符串传递一些东西(例如?lo=1表示已注销),使用特定的已注销页面,通过点击它,您知道您只有通过单击注销(例如loggedout.php)才能到达那里,或者设置一个临时cookie,在returnedpage.php上阅读它,使用它来显示消息,并在一次性使用后删除 cookie。这是我见过的三种方法。

于 2012-12-10T21:46:10.090 回答
1

抱歉,如果我没有完全理解您的问题 - 但是您在重定向之前控制台日志,所以您可以看到来自 console.log的数据。然后你被重定向并且该数据在后续页面上消失了。

#messageBox 在当前页面或重定向页面上的位置?

  1. 如果在当前页面上,您可能希望在此之后放置重定向:

    $('#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>
于 2012-12-10T21:49:20.307 回答