CI 묻고 답하기

제목 ci 에서 ajax 사용시 [초보ㅡㅡ;]
글쓴이 iko 작성시각 2012/12/23 11:14:19
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 15524   RSS
글을 썻다가 뭔가 생각이 나서 지웠다가 다시 쓰네요..ㅡㅡ;;;

ajax call 후에 컨트롤러에서 지정한 view파일때문에 화이어버그 콘솔 응답을 보면 view파일 처음부터 끝까지 전부 읽어버리는데 view파일없이 컨트롤러에서 $data만 받고싶은데 어떻게 해야할까요...

아시는분 부탁드립니다. 감사합니다 꾸벅.

 다음글 게시판 만들고 있는데요 컨트롤러가 너무 길어져서 문의드... (2)
 이전글 controller와 model-query 질문입니다.... (3)

댓글

샤엠 / 2012/12/23 11:36:52 / 추천 0
 ajax 요청으로 원하는 데이터만 받으려고 한다면
컨트롤러에서 원하는 데이터만 출력시키도록 조건문을 걸어도 되고
ajax 요청 응답을 할 수 있도록 응답함수를 따로 설정하여 내 보내야 합니다.

정리하자면 view  파일이 파서되지 않도록 해야합니다.;;
위에서 말한것처럼 ajax 요청을 받으면 조건문으로 걸러서 view 파일이 실행되지 않도록 해야 합니다.
ajax 응답이 내보내지게 될 경우 내 보낸후 return 으로 중단시켜 view 파일이 실행되지 않도록 하거나;;
방법은 많은 것 같습니다.

저의 경우에는 ajax 에 대한 응답은 따로 컨트롤러 메소드로 정의해서 요청에 대한 응답만 보내도록 합니다.
도움이 되셨으면 합니다.
iko / 2012/12/23 13:04:08 / 추천 0
답변 감사합니다.
조건문걸어서 ajax요청시에는 data만 보내도록 했는데
echo json_encode($data) 이렇게 하고 자바스크립트에서는 어떻게 파싱해야하는지 모르겠어요.
$data에는 array,string 이것저것 짬뽕해서 들어있구요.
json2html 플러그인을 써보려고하는데 잘 안되고 그러네요..ㅡㅡ;;;;
더 시도해봐야겠습니다.
감사합니다~

iko / 2012/12/23 15:25:44 / 추천 0
$a = $this->load->view("ajax_return_html",$data);
echo $a;

function(data)
{
   $("#container").html(data);
}

그냥 요렇게 필요한부분을 html로 만들어서 리턴해도 되네요.
결과는  기존에 페이지전부를 다 읽던것보다 훨신 빨라졌어요.
json은 아직 초보에겐....ㅠㅠ 
닥스훈트 / 2012/12/25 03:37:27 / 추천 0
 에.. 이거 코드 구현해서 보여드리긴 좀 그렇고... ^^;

일단 ajax로 data 받는 DOM 부분만 따로 빈 div 로 구현해놓고

그 부분(request 보냈을때 receive 하는 div 부분)의 view를 따로 또 구현해놓습니다.

그러니까 원래의 view + 추가 데이터 받는 부분의 view를 이렇게 두개 구현해 놓는거죠.

그다음 jquery 같은 것으로 div 에 원래 view에 데이터 받는 부분의 view를 

덧붙이면 됩니다.