使用带有MVC的AJAX(CodeIgniter)时回显响应的正确方法

时间:2012-04-25 03:20:16

标签: php ajax model-view-controller codeigniter

我有一个表单,通过AJAX提交时提交到submit_ajax方法。现在,当我收到它作为AJAX请求时,我想返回一个JSON对象。

在这种情况下,我有两个选择。按照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);

3 个答案:

答案 0 :(得分:3)

关于CodeIgniter的好处在于,在大多数情况下,由您决定哪一个更适合您。

如果您(和您的大学)更愿意通过控制器回应,那就去吧!

我个人通过Controller回复ajax回复,因为它很简单,你收集了所有简单的脚本,而不必打开一个视图文件来确认一个重要的json_encode()

在这种情况下,我唯一一次看到使用视图是合乎逻辑的,例如,如果你有两个回显json和XML的视图文件。然后将相同的值传递给这些视图并获得不同的结果会很好。

答案 1 :(得分:2)

根据MVC模式的正确方法是在视图中显示数据。在任何情况下,控制器都不应显示数据。

  

MVC经常出现在Web应用程序中,其中视图是HTML或   应用程序生成的XHTML。控制器接收GET或   POST输入并决定如何处理它......

来源:http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller

答案 2 :(得分:1)

通常当你必须在ajax funnction中显示成功时,你需要标记意味着一些消息。并根据您显示或播放成功功能的那些消息。现在不需要创建额外的视图。控制器中的简单回声json_encode()就足够了。这很容易操纵。