1

重複の可能性:
MVC ajax 呼び出し - どこで処理しますか?


ここに画像の説明を入力 私はフレームワークを持っていますが、全体像は以下のとおりですPage Object: 単純な javascript/jQuery ステートメントには問題はありませんが、データを取得する必要がある JSON や Ajax に関しては混乱します。JSON では、url 部分を配置する必要があるためです。MVC には直接呼び出しはありません。すべてフロント コントローラー (index.php) に到達します。
問題は、MVC で JSON または Ajax リクエストを処理する方法です。オブジェクト指向ではないデータベース接続などを処理するために、別のディレクトリに個別のjson phpファイルを作成する必要がありますか?

4

2 に答える 2

1

投稿で ajax 呼び出しであることを指定するパラメーターを使用して、frontcontroller に「特別な」呼び出しを行い、別の方法で処理する必要があります。次に例を示します。

if($_POST['retrieve_postaction']){
   //general action 
   //load object and do stuff
   if($_POST['is_ajax']){
       //format data for an ajax call and return it
      echo json_encode($array_object);
      exit;}
   else {
      //normal action
     }
   }

}
于 2012-07-16T07:40:24.810 に答える
0

どのフレームワークを使用しているかはわかりませんが、たとえば Zend Framework には、アクションが返すデータの形式を変更できるメカニズムがあります。Zend Framework では、これはコンテキスト スイッチと呼ばれます。

彼らがその機能をどのように実装しているかを調べて、それを自分の mvc に統合できるかどうか、または自分の mvc 内でモデル化できるかどうかを確認することをお勧めします。

http://framework.zend.com/manual/en/zend.controller.actionhelpers.html#zend.controller.actionhelpers.contextswitch

- - 編集 - -

フレームワークがコントローラーに委譲していないようですね。この場合、質問で示唆したソリューションを実装し、Ajax/REST 呼び出しによってのみ消費されるスクリプトを実装します。

- - 編集 - -

フロントコントローラーがリクエストをコントローラーにディスパッチするため、コントローラーレベルでコンテキストスイッチングを実装することをお勧めします。これは、標準のリクエストで使用するのと同じURLを使用して機能しますが、どちらかを読み取ります

a) AJAX 要求で設定する、要求している応答タイプを確認するための HTTP ヘッダー情報。

format=jsonb)アクションの戻り値の型を切り替えるような別のパラメーターをURLに送信します。

投稿したリンクの情報を読むことをお勧めします。これにより、物事が少し明確になるかもしれません。

于 2012-07-16T07:40:10.550 に答える