2

問題を説明するのに苦労しました。また、これが重複している場合は申し訳ありませんが、検索が困難でした。

JQueryを使用してボタンを押すと、比較的単純なAJAX呼び出しを実装しようとしています。私の目標は、「リストに追加」または「リストから削除」というボタンを作成し、押すとサーバーにAJAX呼び出しを行い、リストからアイテムを適切に追加/削除することです。成功すると、ボタンは JQuery によってバックエンドの変更を反映するように変更されます (つまり、[追加] から [削除] へ、またはその逆)。

ユーザーが Javascript を有効にしていなくても (これは良い考えですよね?)、これを機能させたいので、私のボタンは、POST 呼び出しを行い、DB 処理を行い、リダイレクトする標準の html フォーム内にあります。ユーザーを直前の Web ページに移動します。このデフォルトの動作を JQuery でオーバーライドします。

ユーザーが最初にページをロードしたとき、および Javascript を有効にして標準の POST 呼び出しを実行したときに、正しいボタン タイプを表示するために、Django のテンプレート システムを使用してフォームに正しいボタン/非表示の値を表示します。

これはすべてうまく機能します...ほとんどの場合。私が抱えている問題は、ユーザーが Javascript を使用してボタンをクリックしてから別のページに移動し、ページ戻るボタンを使用してページに戻ると、変更が保持されないことです。つまり、ボタンは最初のページ読み込み時に Django によってレンダリングされたとおりに表示されます。これは、ユーザーがページをリロードすると修正されます。

もちろん、これはボタンが DB の状態を正しく反映していないため、ユーザーを非常に混乱させます。どうすればこれを修正できますか?

4

1 に答える 1

2

残念ながら、これに対する本当の良い答えはありません。戻るボタンは通常、ユーザーのブラウザーにキャッシュされたバージョンのページに戻り、多くの形式の動的コンテンツとの相互作用が不十分です。ユーザーに [戻る] ボタンを使用しないよう説得する (堅牢なナビゲーション バーまたは同等の機能を代わりに使用することで簡単になります) か、役立つメモを入れることを検討してください。ブラウザーにページをキャッシュしないように指示する (そのため、ページを毎回完全にロードするようにする) ために入れることができるさまざまなメタタグもありますが、これにより速度が低下する可能性があり、すべてのブラウザーが従うとは限りません。

于 2013-07-11T19:58:19.273 に答える