2016-08-01 10 views
0

私は次のシナリオを持っているとしましょう。 私は1ページの投稿がいっぱいです。それぞれのポストには、ajaxリクエストを通じてモデルのポイント変数にポイントを追加するボタンがあります。ユーザーがそのボタンをクリックしてポイントを追加し、jQueryを使用してDOMからボタンを削除し、そのセッション全体で削除を永続化させたい。したがって、リフレッシュによってボタンが再び表示されるわけではありません。一度クリックして削除ボタンの状態の持続性

私の問題は最後の部分であり、そのボタンは「削除されたまま」です。私はhttpがステートレスであることを知っていますし、どこかで状態を維持しなければならないので、localstorage/localsessionまたはdjangoセッションを使って、データベースにフィールドを追加することを考えました。

どの方法が最も適切でしょうか?他の方法はありますか?

ありがとうございます。似たような質問が表示されない場合は、すぐに削除してください。

+0

この質問は多少曖昧です。ビュー状態を保存するための事実上無限の方法があります。 – stackoverfloweth

+0

はい、@godmodeは言った。それが立っているように、この質問は意見に基づくものであり、広すぎるものであるため、答えられません。保存しているすべてのボタンが既にクリックされているかどうかは[How to Ask](http://stackoverflow.com/help/how-to-ask) – Ares

+0

をご覧ください。私は 'JSON.stringify'とオブジェクトを使用し、' sessionStorage'にそれを格納するページを作成します。次に、ページロード 'JSON.parse(sessionStorage.viewState) ' – stackoverfloweth

答えて

0

私はそれが最高だと主張していませんが、ここに1つのオプションがあります!あなたのJavaScriptで次に

<button id="points_123" class="add_points">Add Point</button> 

: 作る// https://github.com/andris9/simpleStorage

があなたのボタン一意のIDと同じクラス、例えば、それぞれを与える:クロスブラウザの互換性のためのJavaScriptライブラリsimplestorageを使用して

ボタンの記録は( "クリック "機能(){

 simpleStorage.set(this.id, 1); 

    }); 

    // when loading page, hide buttons already clicked 
    // (even to hide everything by default and then show ones not clicked) 
    $(".add_points").each(function() { 
     var clicked = simpleStorage.get(this.id); 
     if (clicked > 0) { 
     $(this).hide(); 
     } 

    }); 

フィドルに。 $("。add_points")をクリックこちら:https://jsfiddle.net/phoebebright/73bv7b6r/

+0

ありがとうございました!これは、デフォルトですべてを隠し、クリックされていないボタンを表示することを除いて、私が選んだ方法です。 –

関連する問題