質問

とりわけ、AJAXコールバックを使用して作成されたアイテムのテーブルが含まれているWebアプリケーションがあります。テーブルの上部にあるフォームフィールドの束を使用すると、さまざまな基準に従ってテーブルに表示されるアイテムをフィルタリングして表示できます。

テーブルの一部には、[x]がそれらの隣にマークされたアイテムのリストがあり、それらのアイテムをクリックして削除できます。

さて、私がこれを非Ajax/JavaScriptの方法で行っていた場合、ページは投稿されたデータフィールドの束を受け取り、それに応じてテーブルをレンダリングします。私はこれを行うことができますが、セットアップ全体をajaxifyすることも望んでいます。私の質問はこれに関するものです。

  1. x]ボタンを作成するにはどうすればよいですか。シンプルな <a> 「動作」しますが、それは取得状態を取得するので、私はそれをしたくありません。私が今やっている方法は、削除されるアイテムを保持するよりも隠されたパラメーターを備えた小さなフォームと、[x]であるスタイルの送信ボタンです。これをajaxifyすると、応答を取得して必要なことを行うことができます。

  2. バックエンドを乾燥させるにはどうすればよいですか? Ajaxifiedバージョンと通常のバージョンには、2つのまったく異なるコードがありたくありません。私が今やっているのは、非Ajaxバージョンに状態を変更し、再びメインページにリダイレクトするURLに送信することです(PRGタイプシステムと同様)。 Ajaxを有効にすると、URLを呼び出してリダイレクトを無視するだけですが、返されたデータを使用してテーブルを調整します。これは「正しい方法」ですか?

  3. バックエンドを乾燥させる方法に関する優雅な劣化に関する他のアドバイスはありますか?

役に立ちましたか?

解決

私はそれぞれの行をそれ自身の形に入れます( method='POST')、そして、どのアイテムを削除するかを示す隠されたフィールドを含めます。 [x]はフォームを送信し、フォームの送信イベントでは、xmlhttprequestが存在しない場合、アイテムを削除して同じページにリダイレクトするフォームをサーバーに送信するだけです(これは、リロードを避けるために良い習慣です削除投稿の再送信)。
xmlhttprequestが存在する場合は、リクエストが成功した場合に削除して、削除して、削除して、削除するために、xmlhttprequestが削除され、削除するように設定します。 ajaxリクエストにフラグを設定して、リダイレクトが発生しないようにすることができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top