2012-04-25 2 views
3

AJAX를 통해 제출할 때 submit_ajax 메서드로 제출하는 양식이 있습니다. 자, AJAX 요청으로 받으면 JSON 객체를 반환하고 싶습니다.MVC (CodeIgniter)에서 AJAX를 사용할 때 반응을 에코하는 올바른 방법

이 경우 두 가지 옵션이 있습니다. MVC 패턴을 따라 무엇을 올바른 방법으로 간주할까요? 제어기

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

옵션 2에서

옵션 1 에코는 제어기로부터 데이터를 수신하고 반향 뷰를 설정한다.

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)가 편리한 설정 방법을 제공한다는 것을 알고있다. JSON 응답을위한 적절한 MIME 유형 :'$ this-> output-> set_content_type ('application/json') -> set_output (json_encode (array ('foo'=> 'bar')))) ' –

답변

3

CodeIgniter의 좋은 점은 대부분의 경우에 그것을 결정하는 자신에게 달려 있다는 것입니다 어느 쪽을 더 편안하게.

귀하와 귀하의 대학이 컨트롤러를 통해 에코를 선호하는 경우 이동하십시오!

개인적으로 컨트롤러를 통해 에코 응답을 반향 시키므로 뷰 파일을 열어 obivous json_encode()을 확인하는 대신 간편하게 모든 간단한 스크립트를 수집 할 수 있습니다.

이 경우에 뷰를 사용하는 것이 논리적 인 경우는 에코의 json과 XML에 대한 2 개의 뷰 파일이있는 경우입니다. 그런 다음이 값에 동일한 값을 전달하고 다른 결과를 얻는 것이 좋습니다.

+0

같은. 컨트롤러를 통해 아약스를 반향시킵니다. – PaulM

1

일반적으로 아약스에서 성공할 때 뭔가를 표시해야 할 때 플래그가 필요하다는 메시지가 있습니다. 그리고 그 메시지에 따라 당신은 성공적으로 전시하거나 놀 수 있습니다. 이제 추가보기를 작성할 필요가 없습니다. 컨트롤러의 간단한 echo json_encode()로 충분하다. 어느 것이 조작하기 쉽습니다.

2

MVC 패턴에 따라 올바른 방법은보기에 데이터를 표시하는 것입니다. 컨트롤러는 어떤 경우에도 데이터를 표시해서는 안됩니다.

MVC는보기가 HTML 인 웹 응용 프로그램이나 응용 프로그램에서 생성 한 XHTML에서 자주 볼 수 있습니다. 컨트롤러는 ... 또는 POST 입력을 GET 받아 그것으로 무엇을 결정

소스 : http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller

관련 문제