3

submit_ajaxAJAX経由で送信されたときにメソッドに送信するフォームがあります。今、AJAX リクエストとして受け取ったら、JSON オブジェクトを返したいと思います。

この場合、2 つのオプションがあります。MVCパターンに従って、それを行う正しい方法と考えられるものは何ですか?

オプション 1 コントローラーからエコーする

class StackOverflow extends CI_Controller 
{   
    public function submit_ajax()
    {
        $response['status'] = true;
        $response['message'] = 'foobar';
        echo json_encode($response);
    }
}

オプション 2コントローラーからデータを受信して​​エコーするビューをセットアップします。

class StackOverflow extends CI_Controller
{
    public function submit_ajax()
    {
        $response['status'] = true;
        $response['message'] = 'foobar';
        $data['response'] = $response;
        $this->load->view('return_json',$data);
    }
}

//return_json view
echo json_encode($response);
4

3 に答える 3

3

CodeIgniter の優れた点は、ほとんどの場合、どちらが使いやすいかを自分で決めることができるということです。

あなた (およびあなたの大学) がコントローラーを介してエコーすることを好む場合は、それを選択してください!

私は個人的に Controller を介して ajax 応答をエコーし​​ます。これは簡単であり、すべての単純なスクリプトが収集されているため、ビュー ファイルを開いて obivous を確認する必要はありませんjson_encode()

この場合にビューを使用することが論理的であると思われるのは、たとえばjsonとXMLをエコーする2つのビューファイルがある場合だけです。次に、これらのビューに同じ値を渡して、異なる結果を取得するとよいでしょう。

于 2012-04-25T10:24:06.743 に答える
2

MVC パターンに従った正しい方法は、ビューにデータを表示することです。コントローラは、いかなる場合でもデータを表示すべきではありません。

MVC は、ビューがアプリケーションによって生成された HTML または XHTML である Web アプリケーションでよく見られます。コントローラーはGETまたはPOST入力を受け取り、それをどうするかを決定します...

ソース: http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller

于 2012-04-25T10:14:11.033 に答える
1

通常、ajax 関数で成功したときに何かを表示する必要がある場合は、いくつかのメッセージを意味するフラグが必要です。そして、それらのメッセージに従って、成功関数で表示または再生します。これで、追加のビューを作成する必要がなくなりました。コントローラーの単純な echo json_encode() で十分です。これは操作が簡単です。

于 2012-04-25T06:01:48.133 に答える