問題を説明するのに苦労しました。また、これが重複している場合は申し訳ありませんが、検索が困難でした。
JQueryを使用してボタンを押すと、比較的単純なAJAX呼び出しを実装しようとしています。私の目標は、「リストに追加」または「リストから削除」というボタンを作成し、押すとサーバーにAJAX呼び出しを行い、リストからアイテムを適切に追加/削除することです。成功すると、ボタンは JQuery によってバックエンドの変更を反映するように変更されます (つまり、[追加] から [削除] へ、またはその逆)。
ユーザーが Javascript を有効にしていなくても (これは良い考えですよね?)、これを機能させたいので、私のボタンは、POST 呼び出しを行い、DB 処理を行い、リダイレクトする標準の html フォーム内にあります。ユーザーを直前の Web ページに移動します。このデフォルトの動作を JQuery でオーバーライドします。
ユーザーが最初にページをロードしたとき、および Javascript を有効にして標準の POST 呼び出しを実行したときに、正しいボタン タイプを表示するために、Django のテンプレート システムを使用してフォームに正しいボタン/非表示の値を表示します。
これはすべてうまく機能します...ほとんどの場合。私が抱えている問題は、ユーザーが Javascript を使用してボタンをクリックしてから別のページに移動し、ページ戻るボタンを使用してページに戻ると、変更が保持されないことです。つまり、ボタンは最初のページ読み込み時に Django によってレンダリングされたとおりに表示されます。これは、ユーザーがページをリロードすると修正されます。
もちろん、これはボタンが DB の状態を正しく反映していないため、ユーザーを非常に混乱させます。どうすればこれを修正できますか?