2012-04-25 3 views
3

У меня есть форма, которая отправляется на метод submit_ajax при отправке через AJAX. Теперь, когда я получаю его как запрос AJAX, я хочу вернуть объект JSON.Правильный способ ответа эха при использовании AJAX с MVC (CodeIgniter)

В этом случае у меня есть два варианта. Что будет считаться правильным способом сделать это, следуя шаблону 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); 
+2

Я понимаю, что это не то, о чем вы просите, но, как примечание, класс [Output class] (http://codeigniter.com/user_guide/libraries/output.html) обеспечивает удобный способ установки соответствующий MIME-тип для ответов JSON: '$ this-> output-> set_content_type ('application/json') -> set_output (json_encode (array ('foo' => 'bar')));' –

ответ

3

Самое замечательное CodeIgniter является то, что в большинстве случаев это до себя, чтобы решить, какой из них вам 'с более удобным.

Если вы (и ваши колледжи) предпочитаете эхо через контроллер, идите на это!

Я лично отвечаю за ответы AJAX через контроллер, потому что это легко, и у вас есть все ваши простые скрипты, вместо того, чтобы открывать файл вида, чтобы подтвердить obivous json_encode().

Единственный раз, когда я видел, что логично использовать представление в этом случае, если у вас есть 2 файла вида, например, json и XML echo. Тогда может быть приятно передать одно и то же значение этим представлениям и получить разные результаты.

+0

Я делаю одна и та же. Я эхо ajax через контроллер. – PaulM

1

Обычно, когда вам нужно показать что-то на успех в ajax funnction, вам нужны флаги, которые означают некоторые сообщения. И в соответствии с этими сообщениями вы показываете или играете в функцию успеха. Теперь нет необходимости создавать дополнительный просмотр. достаточно простого echo json_encode() в контроллере. Это легко манипулировать.

2

Правильный способ в соответствии с шаблоном MVC - отображать данные в представлении. Контроллер не должен отображать данные в любом случае.

MVC часто встречается в веб-приложениях, где представление представляет собой HTML или XHTML, сгенерированные приложением. Контроллер принимает GET или POST ввод и решает, что делать с ним ...

Источник: http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller

Смежные вопросы