16

サーバーからデータをプルします。Struts を使用している場合は、MVC アーキテクチャのページを送信するか、AJAX 呼び出しを行うことでプルできますが、フォームを使用して応答をレンダリングするという慣習がありますが、リッチを提供するという課題にも直面しています。ユーザー エクスペリエンスが低下するため、慣例に妥協し、過剰な AJAX を使用し始めます。この 2 つのバランスをどのようにとればよいのでしょうか?

4

6 に答える 6

34

個人的には、ディスプレイの更新には AJAX を使用し、フォームの送信はページのリロードで行うべきだと考えています。推論?

フォームを送信するときは、アプリケーションに何かをするように指示しています。ユーザーは、それが完了したと感じたい傾向があります。ページがリロードされない場合、ユーザーは「うまくいったのだろうか?」と疑問に思うことがよくあります。次に、自分のしたことが正しかったことを確認する必要があります。

一方、グラフなどを表示しているときに、たとえば、ユーザーが「2011 年のデータを表示....2012 年のデータを表示」と言った場合、ユーザーは何かを「実行」していません (新しいエンティティの作成、電子メールの送信、等)。したがって、この場合、AJAX は適切なユーザー インターフェイスを提供できます。ここでは、ページのリロードが煩わしいでしょう。

結論として、フォームの送信はページのリロードを介して行う必要があり (ユーザーに動作を確認させる)、表示の更新には AJAX を使用する必要があります (煩わしいページのリロードを防止します)。

もちろん、これは好みの問題です。私の会社のアプリケーションのいくつかは、至る所で AJAX を使用しています。しかし、これらは保守とデバッグが最も難しいアプリケーションです。;)

于 2012-11-08T16:54:04.950 に答える
9

通常の古い HTML フォームの送信と派手な ajax フォームは相互に排他的ではありません。

まず、プレーンな HTML フォームが正しく機能するようにします。次に、javascript を追加してフォームをハイジャックし、ajax リクエストを送信します。

コントローラーとモデルは、ユーザーのブラウザーが JavaScript をサポートしているかどうか (または有効にしているかどうか) を気にしません。表示されるビューは、呼び出しが JavaScript で行われたか、単純なフォーム送信で行われたかによって決まります。これは MVC パターンの強みの 1 つであり、制約ではありません。

于 2012-11-08T16:41:10.760 に答える
7

2つの間の選択はやや本質的だと思います:

  • フォームの送信は同期的で、ページをリロードします。

  • ajax 呼び出しは非同期であり、ページをリロードしません。

特定のアクションが多くの UI 要素を変更する場合、またはレンダリングするために多くのデータをポーリングする必要がある場合は、フォーム送信を使用します。一方、特定のアクションが単純なアクション (選択ボックスへの入力やユーザー エクスペリエンスの向上など) に使用される場合は、AJAX 呼び出しを使用します。

必要なだけ多くの ajax 呼び出しまたはフォーム送信を使用することを回避するものは何もないため、最終的にはあなた次第です。

于 2012-11-08T16:44:26.403 に答える
2

データの送信の間にエラーが発生した場合、サーバーで確認できる唯一のフォーム メソッドです。一方、Ajax 呼び出しを行うと、クライアント側でそのエラーを確認できます。したがって、データを送信するこのさまざまなテクノロジーから、それらがさまざまな目的に役立つという決定に従うことができます。

于 2012-11-08T16:36:41.523 に答える
0

AJAX を使用してフォームを送信する場合、ブラウザーではなく POST 要求を生成するため、より詳細に制御できます。最初はそのコントロールが必要なくても、いずれ必要になる場合があります。

1 つのケースは、フォームに対する CSRF 攻撃に対する保護です。これは、フォーム データと一緒に送信される CSRF トークンを含む非表示のフォーム入力フィールドを追加することで実装できます。ただし、推奨される実装は、送信された POST 要求にカスタム ヘッダーを追加することです。ただし、古いフォーム送信方法を使用している場合、後者は実行できません。ブラウザーがリクエストを構成し、独自のヘッダーを追加することはできません。

于 2020-11-11T17:48:16.247 に答える