3

私は Cookie を使用しないセッションに取り組んでいます。URL を介して変数を渡すつもりはありませんが、window.name または非表示のフォームを使用しようとしています。window.name については、次のようにします。

$(window).unload(function(){
    if(location.href.indexOf(<my pages base url>) != -1){
    // the user is going to my site
        if($.parseJSON(window.name).previous_site.indexOf(location.protocol + '/' + location.host) != -1){
        // now I know, that user was of my site
            cookie_alternative = new Object();
            cookie_alternative.previous_site = location.href;
            cookie_alternative.session_id = $.parseJSON(window.name).session_id; // this is important
            .....
            window.name = $.toJSON(cookie_alternative);
        }
        else{
        // the user was elsewhere
            cookie_alternative = new Object();
            cookie_alternative.previous_site = location.href;
            cookie_alternative.session_id = <something new>;
            .....
            window.name = $.toJSON(cookie_alternative);
        }
    }
    else{
    //the user goes somewhere else
        window.name = '';
    }
});

したがって、この方法で session_id を追跡できます。非表示の入力フィールドを使用する場合、これと同様のことを行うと思います。そして今、window.name のこの変数 (session_id) を Cookie のように動作させたい - ユーザーがリンクをクリックすると、Web の別の部分に移動する => リクエストがサーバーに送信され、サーバーが応答し、ページが表示されます。このリクエストでは、post を使用して session_id をサーバーに送信したい (Cookie のように)-しかし、これを行う方法がわかりません。私は次のようなことを考えていました:

$('a').click(function(){
    $.post({
        url: $(this).attr('href'),
        data: $.parseJSON(window.name).session_id,
    })
})

しかし、うまくいくとは思えません。また、前述のとおり、URL 書き換えを使用するつもりはありません。これを行う別の方法としては、非表示のフォーム タイプの投稿を作成し、リンクをクリックしてフォームのアクション (リンクの href) を設定し、データ: session_id を設定し、フォームのアクションをトリガーすることです。次のページのリクエストに従うために投稿を送信するアイデアはありますか? または、非表示のフォーム フィールドを使用して同じことを達成する方法は? どんな助けでも本当に感謝しています..

4

2 に答える 2

0
$('a').click(function(e){

    //Preventing link from triggering
    e.preventDefault();     

    var elObj = $(e.currentTarget);

    $('#secret-hidden-form').attr('action',elObj.attr('href'));

    $('#secret-hidden-form').submit();
    return false;
})

ページの下部:

<?php 
if (isset($_POST['session_id']) {
    $sessId = $_POST['session_id'] 
} else {
    $sessId = uniqid();
}
?>
<form id="secret-hidden-form" method="post">
    <input type="hidden" value="<?php echo $sessId; ?>">
</form>

たぶん、このようなものがうまくいくでしょうか?

于 2011-09-16T08:03:02.237 に答える