제목 | jQuery를 이용한 Ajax구현 테스트상의 문제점 | ||
---|---|---|---|
글쓴이 | 토마스 | 작성시각 | 2013/10/24 21:02:07 |
|
|||
jQuery를 이용해서 Ajax를 실행하는 테스트를 하려는데 도데체 뭐가 문제인지 모르겠습니다. 공부를 시작한지 얼마되지않아 기존에 올려져있는 글들을 보아도 잘 이해가 되지 않네요. 고수님들 아래의 코드를 확인하시고 무엇이 문제인지 알려주시면 감사하겠습니다. Cotroller에 ajax_test.php의 코드는 다음과 같습니다. <?php if(!defined('BASEPATH')) exit('No direct script access allowed'); class Ajax_test extends CI_Controller{ function __construct(){ parent::__construct(); } /* * Ajax테스트 */ public function test(){ $this->load->view('ajax/ajax_test_v'); } function ajax_receive(){ $msg = $this->input->post("msg",TRUE); echo $msg; } } ?> Viewer안에 ajax라는 폴더 안에 있는 ajax_test_v.php의 코드는 다음과 같습니다. <!DOCTYPE html> <html> <head> <script src="http://code.jquery.com/jquery-latest.js"></script> </head> <body> <div id="result"></div> <input type="text" id="msg" /> <input type="button" value="get result" id="getResult" /> <script> $('#getResult').click( function() { $('#result').html(''); $.ajax({ url:'/bbs/ajax_test/ajax_receive', dataType:'text', type:'POST', data:{ 'msg':$('#msg').val() }, complete:function(xhr,textStatus){ if(textStatus == 'success'){ $('#result').html(xhr.responseText); } } }); }); </script> </body> </html> |
|||
다음글 | 코드이그나이터로 구글에 검색잘되는 웹사이트 만드려면 (3) | ||
이전글 | codelgniter 소스 분석중 질문 있습니다. (1) | ||
변종원(웅파)
/
2013/10/24 21:28:37 /
추천
0
|
토마스
/
2013/10/25 07:06:45 /
추천
0
버튼을 클릭을 해도 서버측으로 보낸 input데이터가 <div id="result"></div>안에 표시가 되지 않습니다.
말씀하신대로 개발자도구로 확인해보니 post값은 넘어가는것 같은데... Controller의 ajax_test / ajax_receive함수로 부터 응답이 되질 않습니다. Response를 보면 에러시 표시되는 페이지의 소스를 가져오네요. 에러내용을 보니 아래와 같습니다. |
한대승(불의회상)
/
2013/10/25 09:58:46 /
추천
0
일단 컨트롤러쪽 코드에 에러는 없는것 같은데 에러내용은 500 이군요.
경로가 잘못 된거 같기도 하고... 아래 처럼 소스 수정 하시고 웹브라우져에서 http://localhost/bbs/ajax_test/ajax_receive/?msg=123 이런식으로 입력해 보세요. 출력에 이상이 없다면 ajax를 get 방식으로 바꿔서 테스트 해보시구요. function ajax_receive(){ $msg = $this->input->get("msg",TRUE); echo $msg; } |
토마스
/
2013/10/25 10:40:59 /
추천
0
불의회상님 말씀하신대로 get방식으로 바꿔서 실행을 하니까 정상적으로 작동을 하네요.
하지만,post방식으로는 실행이 안되는게 좀 답답하네요 혹시 아시는분 계시면 알려주시기 바랍니다. 웅파님, 불의회상님 유용한 답변을 주셔서 너무 감사드려요. |
letsgolee
/
2013/10/25 17:39:41 /
추천
0
ajax_test.php를 다음으로 하고:
<?php if(!defined('BASEPATH')) exit('No direct script access allowed'); class Ajax_test extends CI_Controller{ function __construct(){ parent::__construct(); $this->load->helper('url'); } /* * Ajax테스트 */ public function test(){ $this->load->view('ajax/ajax_test_v'); } function ajax_receive(){ $msg = $this->input->post("msg",TRUE); echo $msg; } } ?>ajax_test_v.php를 다음으로 합니다: <!DOCTYPE html> <html> <head> <script src="http://code.jquery.com/jquery-latest.js"></script> </head> <body> <div id="result"></div> <input type="text" id="msg" /> <input type="button" value="get result" id="getResult" /> <script> $('#getResult').click( function() { $('#result').html(''); $.ajax({ url:'<?php echo site_url("bbs/ajax_test/ajax_receive");?>', dataType:'text', type:'POST', data:{ 'msg':$('#msg').val() } }).done(function(data) { $('#result').html(data); }); }); </script> </body> </html>저는 테스트에서 잘 됩니다. |
토마스
/
2013/10/25 19:32:56 /
추천
0
조금전에 테스트 해봤는데..역시 GET방식 설정으로는 잘 되는데 POST방식으로는 잘 안되더라구요
CI환경설정상의 차이 때문이 아닐까 싶은데요. 좀더 분석해 봐야겠습니다. letsgolee님 테스트도 해보시구 알려주셔서 너무 감사해요. |
토마스
/
2013/10/28 20:43:53 /
추천
0
결국 CodeIgniter의 버전의 차이인것 같습니다. 최신버전(v2.1.4)상의 버그인지 모르겠는데
위와 같은 예제를 v2.1.3상에서 실행해 보니까 POST도 문제없이 실행이 되었습니다. 좋은 답변들 감사드립니다. |
letsgolee
/
2013/10/29 08:44:23 /
추천
0
이건 Ajax 통신문제이지 codeigniter문제가 아닙니다. 저도 최신버젼에서 테스트 한거고 또한 지금 사무실 사용하는 프로그램을 짜고 있는데 거의 모든 것이 ajax로 작동됩니다. 소스를 잘 확인해보세요.
|
토마스
/
2013/10/29 09:12:32 /
추천
0
그런가요?. 알겠습니다. 다시 살펴봐야겠네요.
|
닉
/
2013/10/30 08:44:04 /
추천
0
포스트로 아작스 쓰려면 콘피그에 설정한 ci_세션인가 쿠키 값도 같이 넘겨야 오류없이 넘어가요
|
토마스
/
2013/10/30 10:50:48 /
추천
0
아 그런가요? 그렇게 테스트 해 보겠습니다. 감사합니다.
|
작동이 어떻게 안되는지 올려주셔야죠.
버튼을 눌러도 반응이 없다거나 ie에서 개발자도구f12)에서 스크립트 에러가 난다거나...
파이어폭스에 파이어버그라는 확장프로그램 설치하고 post가 제대로 넘어가는지,
데이터가 제대로 화면에 출력되는지 확인해 보세요.