2011-06-23 15 views
14

MVCモデルをAJAXビットを多数使用したjQueryで使用すると、コントローラ、メソッド、ビューをどのように整理できますか?質問1MVCを使用したAJAXとjQuery

あなたはAJAX呼び出しのためだけに別のコントローラを持っていますか、またはあなたが1つのコントローラでは、あなたの通常の非AJAXの方法と一緒にAJAXのメソッドを混在できますか?

質問2

あなたは、単一のコントローラでのAJAXと非AJAXのメソッドを混在した場合、あなたは別のAJAXと非AJAXのメソッドを持っているか、または(可能であれば)あなたがそれらを一緒に結合しますと、通常のビューまたはAJAXビューがブラウザに戻されるかどうかを決定する値(NULLまたはAJAX)を渡します。あなたは50種類のAJAX呼び出しがあり、各呼び出しが順番に表示を必要とするメソッドを、必要な場合は

質問3

は、我々は50個のメソッドと50のビューのコントローラで終わります。これは良いMVCの練習ですか?コントローラ内のすべてのAJAXメソッドが1つのビューを共有していると考えることができます。ビューファイルにはケースの条件文が含まれ、ビューファイルには50個のケースのどれが使用されるかを決定するパラメータが渡されます。種類の代わりに、非常に多くのビュー(50ビュー)を有するので、あなたはコントローラメソッドではなく、ビュー内で出力をエコーをどう思いますか1.

質問4

に50個のビューを圧縮するように?このように私たちはあまりにも多くの意見を持っていません。 AJAX用の個別のコントローラ -

ところで、私は私のMVCモデル

答えて

10

Iが同じコントローラにAJAXおよび非AJAXコードを混在1

質問。そうすれば、あなたのコードは簡単に見つけることができます。

質問2

私は一緒にアヤックスと非AJAX方法を兼ね備えています。 JavaScriptのない人はまだ同じコントローラ

質問3

に投稿するように、それが簡単にあなたが50個の方法と1つのコントローラを持つべきではありませんjavascript Progressive Enhancementを使用できるようになります。機能ごとにコントローラが必要です。だから、ユーザーコントローラ、Fooコントローラ、バーコントローラ - ので、それぞれ5つの方法で10 contollersで終わる可能性があります。この方法は、その機能に特有のクラスに属します。私は別々の意見を持っていますが、大きな意見はありません。何が表示されているかを判断するには、LOGICをビュー内で使用しないでください。これがコントローラの仕事です。しかし、いくつかのコントローラ/メソッドは、他の方法

質問4

またはコントローラべきNEVER出力HTMLと同じビューを返すことができます。ビュー(レンダリング)の心配からCode(コントローラを分離)するために、MVCの全体的な部分であるこのビューを使用してください。私の見解では、JSONまたはXMLを返してから、DOMを更新するためにJavascriptテンプレートを使用することがあります。私の意見がHTMLを返す場合もあります。たとえば、フォーム上のSave関数です。成功した場合はブール値を返します。私のJavascriptは応答に応じてDIVを隠すか表示します。

+0

私はMVC .NETを使用していますので、YMMV for PHP – Daveo

+0

私はadmincontrollerを持っています。これは70のメソッドを持っています。全管理者が1つのコントローラを使用しています。 – Gowri

3

質問1のためにCodeIgniterのPHPフレームワークを使用しています。サーブレットを使用している場合は、非同期サポートのための新しいサーブレット3.0のサポートを利用する必要があります。

http://www.javaworld.com/javaworld/jw-02-2009/jw-02-servlet3.html?page=2

質問2 - 私たちは別のコントローラを使用しているので、これは適用されません。

質問3 - 機能が重複していない50のユニークなコールがあるシナリオがありますか? あなたは50回のAJAX呼び出しを持っていますが、これらの要求を処理するためにサーバー側で多くの再利用が可能です。したがって、50コールは50メソッドに等しくはありません。それぞれの要求を、&コマンドでラップすることができます。

質問4〜50回のコールは、50回のビューに等しくない場合があります。ここでも再利用する必要があります。あなたはビューコンポーネントを分離する必要があります&それらをアセンブルします。デザインにこだわります。

3

jQueryがAJAX呼び出しを行うと、jQueryはX-Requested-With HTTPヘッダーを追加します。このヘッダーは、特定の要求がAJAX要求であるかどうかを判断するために使用できます。それを念頭に置いて、AJAXと従来のリクエストの間で同じコントローラアクションを共有し、モデルを構築してからそのモデルで従来のリクエストのビューをレンダリングするか、AJAXの同じモデルのJSONシリアル化表現リクエスト。

関連する問題