3

jQuery を使用して、ページの下部にある検索結果とページ ナビゲーションを更新および読み込みます。jQuery スライダーとチェックボックス付きのいくつかの HTML フォームがあり、これらの要素ごとに (変更時に) Cookie を設定し、すべてのブラウザーで非常にうまく機能.load()する からコンテンツを読み込むために使用します。load_search.php

同じ方法を使用してページ ナビゲーションをアップロードすると、非常に奇妙な結果が得られます。search.php の jQuery コードは次のとおりです。

// PAGE NAVIGATION //

$('#page_navigation').on("click", ".page_no_item" , function(event) {
      var id = (event.target.id);
      $.cookie("cur_page_no", id);
      search_results_load();
      page_navigation_load();
      alert($.cookie("cur_page_no")); // -> returns the right cookie value
    });

また、ドキュメントの準備ができていることを確認するために、次の値を確認します。

$(document).ready(function() {  
      alert($.cookie("cur_page_no")); // -> also returns the right cookie value
    });

.php私がロードしたファイルでは、Webkit 以外のブラウザーで$_COOKIE['cur_page_no']は正しい値が返されますが、Webkit ブラウザーでは常に 1 が返されます (Cookie が空であるか設定されていない場合は、これを標準として置きます)。Webkit ブラウザでvar_dump()は常に返されます。string(1) "1"

注: ローカルホスト以外で実行しようとしましたが、問題は残ります。また、まったく同じ方法で他の Cookie を読み取り (チェックされているチェックボックスなど)、正しい値を返すことにも注意してください。

アイデアやヒントは大歓迎です!事前にどうもありがとうございました!!:)

4

1 に答える 1

2

私がこの問題に直面したとき、いくつかの例では、実際には同じ名前の2つのCookieがあったように見えました。それらの1つはphpで作成されたCookieであり、もう1つはjavascriptで作成されたCookieでした。他の例では、Cookieが1つありましたが、ページ全体のリロードが発生するまで、phpは更新された値を適切に出力しませんでした。

新しいページをロードすると、Cookieの目的の「新しい」値が読み取られるという問題がありました。したがって、phpのCookie更新の遅延効果に対処する方法のひとつは、使用可能なCookieメソッドを使用することと、設定することの両方を行うこと$_COOKIE['yourCookieName'] = $valです。

残念ながら、私が固執しなければならなかった解決策は、JSまたはPHPのいずれかで特定のCookieを完全に処理し、それを固執することです。これが、読み取り/値の更新/複製の問題を発生させない唯一の方法でした。

于 2012-04-25T19:54:11.793 に答える