CI 묻고 답하기

제목 jQuery 이용해서 댓글을 기능을 만들고 있습니다.
글쓴이 나잇황제 작성시각 2010/04/13 15:38:15
댓글 : 15 추천 : 0 스크랩 : 0 조회수 : 38806   RSS
comment.php라는 view 파일에서
<script type="text/javascript">
			$(function() {
				
				//retrieve comments to display on page
				$.getJSON("<?=site_url('sports/data/load_comment')?>", function(data) {
				 
					
					//loop through all items in the JSON array
					for (var x = 0; x < data.length; x++) {
					
						//create a container for each comment
						var div = $("<div>").addClass("row").appendTo("#comments");
						
						//add author name and comment to container
						$("<label>").text(data[x].name).appendTo(div);
						$("<div>").addClass("comment").text(data[x].comment).appendTo(div);
					}
					
					alert('ok');
				});	
				
				//add click handler for button
				$("#add").click(function() {
				
					//define ajax config object
					var ajaxOpts = {
						type: "post",
						url: "<?=site_url('sports/data/process_comment')?>",
						data: "&author=" + $("#leaveComment").find("input").val() + "&comment=" + $("#leaveComment").find("textarea").val(),
						success: function(data) {
							
							//create a container for the new comment
							var div = $("<div>").addClass("row").appendTo("#comments");
						
							//add author name and comment to container
							$("<label>").text($("#leaveComment").find("input").val()).appendTo(div);
							$("<div>").addClass("comment").text($("#leaveComment").find("textarea").val()).appendTo(div);
							
							//empty inputs
							$("#leaveComment").find("input").val("");
							$("#leaveComment").find("textarea").val("");
						}
					};
					
					$.ajax(ajaxOpts);
				
				});		
			});			
		</script>
이런식으로 입력을 합니다.

그런데 입력은 잘되는데

입력한 댓글을 맨처음 로드할때는 물론이고 불러오질 못하네요.

CI에서 getJSON 으로 어케 불러와야 하나요?
 controller에서
function load_comment()
	{
		//echo $_GET['callback']."(".JSON데이터.")";
		
		$this->load->helper('json'); 
		alertMsg('ggg');
		$result_add= $this->board_model->get_comment_list();
		echo json_encode(array('name'=>$result_add['cmt_name'],'comment'=>$result_add['cmt_content']));
		
	}
이런식으로 구성하고 있는데. 이런식으로는 도저희 안되네요.

혹시 댓글 jQuery 로 하신분 있으면 도움좀 부탁드립니다.

이소스 아니더라두... 성공한 소스 있으시면 좀 보내주시면 안될까요? 참고하게요.

이것만 1주일ㅉ재 붙잡고 있네요. 미친듯이 구글링을 해도 안나오구... 쩝..ㅡㅡ;
 다음글 컨트롤러들을 하위폴더로 구성하기 부분에 이해가 안되네요... (2)
 이전글 수강신청 프로그램 제작시 (2)

댓글

헛발이 / 2010/04/13 15:45:18 / 추천 0
여기 포럼소스에도 jQuery로 댓글을 처리 한걸로 알고 있어요.. 소스 함 보세요~
왼쪽에 소스가져가기 있을거에요..

케이든 / 2010/04/13 15:58:13 / 추천 0
$comment[0] = array(
	'name' => $result_add['cmt_name'],
	'comment' => $result_add['cmt_content']
);

echo jons_encode($comment);
될런지는 모르겠네요

파이어버그로 보면 한번에 빵 나올텐데..
나잇황제 / 2010/04/13 16:20:34 / 추천 0

헛발이님// 답변주셔서 감사합니다.
다운 받았는데... 소스 분석해야 할 것들이 많네요.ㅎㅎ 한번 해볼게요.ㅎㅎ

케이든님// 답변주셔서 감사합니다.

확인 해보겠습니다.
근데... 원래 controller 에서 alert창을 띄워서 확인은 못해 보나요?
echo 문으로

 

echo "<script>alert('확인');</script>";
이런식으로 확인을 해봐도 view 페이지 로드할때 경고창이 뜨지를 않네요. ㅜㅜ
헛발이 / 2010/04/13 16:56:29 / 추천 0
혹시 부라우져 설정에서 alert을 표시 못하게 한건 아닌지 확인도 필요할듯 싶네요..
나잇황제 / 2010/04/13 17:02:58 / 추천 0

헛발이님 답변 감사합니다.

브라우저 설정 확인 해보니 경고창은 잘 뜨고 있네요.

컨틀롤러에서 view 부분에 경고창 띄워보니 잘 뜨는 군요..
아.. 답답하네요.. 쩝..ㅠㅠ

헛발이 / 2010/04/13 17:57:47 / 추천 0
혹시 언어 문제는 아닌지.. 중간에 "확인"이라는 한글이 혹시 깨져셔 정상적인 echo "<script>alert(' 확인');</script>";를 표시 못하고 echo "<script>alert(' $%^#@');</script>"; 이렇게 될수도 있으니... ^^;
나잇황제 / 2010/04/13 19:21:18 / 추천 0
헛발이님 감사합니당.ㅎㅎ ^^

한글 로 예를들어 본거궁... 영어로 해서 해도 안되네용..

아마도 getJSON으로 컨트롤러페이지를 못찾는건 아닌가 싶기도 한데.. 왜 안되는지 모르겠네요..ㅠㅠ
헛발이 / 2010/04/13 21:43:27 / 추천 0
역시 초보라서 별 도움이 안되는군요 ..
나잇황제 / 2010/04/13 21:53:49 / 추천 0

헛발이님 아닙니다.. ㅎㅎ
감사하게 생각하고 있습니당. *^^*
함께 열심히 해보아요..ㅎ

변종원(웅파) / 2010/04/13 21:56:04 / 추천 0
jquery getjson이 매뉴얼에 나와있는 대로해서 안되는 경우가 있습니다. 제가 포럼에도 올린게 있을텐데..
흠.. 찾아보니 그건 외부 json 데이터 가져올때였고.. (http://www.jblove.net/b12/1541?category=20)

alert 자체가 실행이 안됐다면 jquery실행이 안되는것일 수도 있을 것 같습니다. (jquery 손 놓은지 2달 됐는데 다 잊어먹었습니다.)  jquery로 개발하면서 가장 애먹었던 부분이 아예 실행 자체가 안되는데도 아무런 경고메세지가 없었다는 것입니다.

$(function() { <- 이 부분을 바꿔보세요.

포럼소스 어떻게 만들었는지도 가물가물하고...

도움이 못돼 죄송합니다. ^^;
나잇황제 / 2010/04/13 22:24:15 / 추천 0
웅파님... 그럼 포럼 소스 댓글입력하는 것중에..
view.php 파일의 일부 소스입니다.

$(function(){
 	// Ajax Submission
	$('#add_comment_btn').click(function(){
	  	var oEditor = FCKeditorAPI.GetInstance('wcontent') ;
		var values = oEditor.GetHTML();
		if (values == '') {
			alert('내용을 입력하세요!');
			return false;
	 	} else {
	 		$.ajax({
	 			type: "POST",
	 			url: "/action/index",
	 			data: {
	 				"contents":values,
	 				"no": <?= $views['no'] ?>,
	 				"table": '<?= MENU_BOARD_NAME_EN ?>',
	 				"resize": '<?=$img_size?>',
					"wname":"name",
					"module_no": '<?= MENU_ID ?>',
	 				"skin": '<?=MENU_SKIN?>'
			 	},
			 	complete: function(r){
			  		$('#comment_list').html(r.responseText);
			  		$('img').jScale({w:'<?=$img_size?>'});
			  		oEditor.SetHTML('');
		  		}
	 		})
	 	}
	});

});
이부분에서.  url: "/action/index", <= 이게 어디로 타겟팅이 되는 건가요?

혹시 아시나요??

이부분이 어디로 타겟팅이 되는지 알수가 없네요.. ㅠㅠ
케이든 / 2010/04/14 02:03:38 / 추천 0
저도 제이쿼리를 안써서 몰랐는데

웅파님 댓글 읽고 메뉴얼 보니깐 getJSON은 jsonp호출입니다

$.ajax({
 dataType : 'json'

으로 해보세요


위 소스에

/action/index 는 도메인+/action(컨트롤러)/index(메쏘드) 입니다

<base>태그가 설정되어있지않다면

codeignite-kr.org/action/index 가 되겟죠


이렇게 해서안되면 파이어버그쓰세요

리퀘스트가 어느 주소로 됬는지, 받아온 json이 무엇인지 다 나올텐데요
변종원(웅파) / 2010/04/14 12:53:56 / 추천 0

네 /컨트롤러/메소드/ 입니다. 거기서 댓글에 해당하는 부분을 만들어서 화면출력을 하고

$('#comment_list').html(r.responseText); 이 라인으로 현재 화면에 반영을 해줍니다.

변종원(웅파) / 2010/04/14 13:00:53 / 추천 0
참. 케이든님 말씀처럼 파이어폭스에 파이어버그 설치해서 사용하면 자바스크립트 문제인지 데이터가 어떻게 넘어오는지 어떻게 넘어가는지 다 확인이 가능합니다.
나잇황제 / 2010/04/14 15:25:34 / 추천 0
웅파님 // 케이든님 감사하니다.

파이어버그 설치해보고 거기에서 한번 테스트 해봐야겠네요.

테스트 해보고 다시 글 남기도록 할께요. *^^*