3

submit_ajax我有一个通过 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);
4

3 回答 3

3

CodeIgniter 的伟大之处在于,在大多数情况下,您可以自行决定使用哪个更舒服。

如果您(和您的大学)更喜欢通过 Controller 回应,那就去吧!

我个人通过 Controller 回显 ajax 回复,因为这很容易,并且您收集了所有简单的脚本,而不必打开视图文件来确认明显的json_encode().

The only time I'd see it to be logical to use view in this case is if you have 2 view files that echo's json and XML for instance. Then it can be nice to pass the same value to these views and get different outcome.

于 2012-04-25T10:24:06.743 回答
2

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

MVC 经常出现在 Web 应用程序中,其中视图是应用程序生成的 HTML 或 XHTML。控制器接收 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 回答