2012-11-08 25 views
11

我々はStrutsのを使用している場合我々は、我々はMVCアーキテクチャまたは我々はAJAX呼び出しを作るカムが、規則はフォームを使用してのあるページを提出することによっていずれか引くことができ、サーバから、そのためのデータを取得レスポンスをレンダリングしますが、豊富なユーザーエクスペリエンスを提供するための課題にも直面しているため、コンベンションを妥協し、過度のAJAXを使用するようになります。AJAXフォーム提出対

答えて

15

私は個人的にAJAXをディスプレイの更新に使用し、フォームの提出はページの再読み込みを介して行うべきだと思います。推理?

フォームを送信するときに、アプリケーションに何かをさせることを指示しています。ユーザーはそれが完了したと感じる傾向があります。ページがリロードされないと、ユーザーはしばしば「うまくいきましたか?それから、彼らは何が正しいのかを確認する必要があります。

一方、チャートや何かを表示しているときに、ユーザーが「2011年のデータ....今2012年のデータを表示する」と言うと、 、電子メールを送信するなど)。このため、AJAXは素晴らしいユーザーインターフェイスを提供できます。ページのリロードはここで迷惑になるでしょう。

結論として、フォームの提出はページの再読み込み(ユーザーには動作させてもらう)で行うべきですが、表示の更新はAJAXを使用する必要があります(厄介なページの再読み込みを防ぎます)。

もちろん、これは好みのことです。私の会社のアプリケーションの中には、AJAXを全面的に使っているものもあります。しかし、これらは、保守やデバッグが最も難しいアプリケーションです。;)

+19

あなたはajaxの考え方を再考したいかもしれません。あなたは本当にあなたがupvoteときにリロードするか、またはSOにコメントをしたいですか?正しく行われたajaxはきれいで、優雅に劣化します。 (さらに、日付のついた側面ですが、モバイルデバイスの場合は特に重要です.Ajaxで帯域幅を節約できます) – bdares

+2

私は同意します。私はフォームを記入するような "フォーム提出"についてもっと話していました。あなたの変更が大規模でない場合、私はAJAXを使用することに同意します。私はより多くの "データベースにすべてのデータを追加する"などを考えていた –

+0

それを指摘するための "便利な" upvote。 Ty。 :) –

2

データの提出の間にエラーが発生した場合は、サーバーでチェックできる唯一のフォームメソッドです。一方、Ajaxを呼び出すと、クライアント側でエラーをチェックできます。したがって、データを伝送するこの異なる技術のうち、異なる目的を果たすという決定に従うことができます。

7

通常の古いHTMLフォームの提出とファンシーajaxフォームは、互いに排他的ではありません。

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

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

5

私は2つの間の選択がある程度固有のものであることを考える:

  • フォームの送信は同期であり、それはページを再読み込みします。

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

特定のアクションは、UI要素の多くを変更したり、レンダリングされる大量のデータをポーリングする必要があります場合は、私は、フォームの送信となるだろう。一方、選択ボックスの作成やユーザーエクスペリエンスの向上など、単純なアクションで特定のアクションが使用された場合は、AJAX呼び出しを行います。

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