我有一个表单,通过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);
答案 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()就足够了。这很容易操纵。