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 だけでなく、THINK と LEARN を支援してくれた上記のすべての人に感謝します。

于 2012-12-11T02:14:08.817 に答える
1

現在のページではなく、返されたページでそれを行う必要があります。

クエリ文字列を介して何かを渡すか(たとえば?lo=1、ログアウトを意味する)、特定のログアウトページを使用します。このページを押すと、ログアウトをクリックするだけでそこに到達したことがわかります(たとえばloggedout.php)。または、一時的なCookieを設定してreturnedpage.phpで読み取ります。これを使用してメッセージを表示し、1回の使用後にCookieを削除します。これらは私が採用した3つの方法です。

于 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 に答える