| 제목 | 필터 기능 구현 중 동기에서 비동기 방식으로 변경하니, 작동이 안 되네요 | ||
|---|---|---|---|
| 카테고리 | PHP | ||
| 글쓴이 | 그동안 | 작성시각 | 2019/07/01 10:33:38 | 
|  | |||
| !주말동안 질문 글이 묻힌듯해서 다시 질문 드립니다 
 게시판 목록 상단에 필터 기능이 복잡하게 있는 걸 구현하고 있는데요. 1번 동기 방식으로 했을때 잘 작동합니다. 2번 비동기 방식으로 하면 동작이 안 되네요. (새로고침이 싫어서 비동기 방식으로) 
 [증상] - 개발자 선택 --> preview에 개발자만 보여짐(정상) ----> 목록에는 처음화면 그대로 반응 없음 - 뷰 ajax + jquery 코드에 이슈가 있을 것으로 의심 
 1번. 동기방식 : 정상 동작 [ 뷰 ] 
 //체크박스 값 받아서 컨트롤러로 넘김 
<script>
    $(document).on('change', 'input:checkbox', function() {                   
        var job_type = $("input[name=job_type]:checked").map(function () { return this.value }).get().join(); 
        $("#filter_action").submit();
     });
</script>
// 리턴 받은 data foreach로 돌리기
<?php
   foreach ($freelancer_list as $lt)
   {
     생략
   }2번 비동기 방식 : 동작 안함 [ 뷰 ] 
//체크박스 값 받아서 컨트롤러로 넘김 
<script>
    $(document).on('change', 'input[name=job_type]', function()
    {
        var job_type = $("input[name=job_type]:checked").map(function () { return this.value }).get().join();
        $.ajax ({ 
	        url : "/freelancer/freelancer_list",
	        type : "POST",
	        //dataType : "json",
	        data : {
		             job_type : job_type 					 
		           },
            success : function(result)                 
	        {	    
		            alert("필터가 성공적으로 적용 되었습니다");   
	        },
	        error : function(request,status,error)    
	        {
                    alert(request.status + " code 에러가 발행해서 정상적으로 처리하지 못했습니다");
            }	        
        })  
    });
</script>
// 리턴 받은 data foreach로 돌리기
<?php
   foreach ($freelancer_list as $lt)
   {
     생략
   }
 [컨트롤러] 
    public function freelancer_list()
    {    		 
      	if ( $this->input->post('job_type', TRUE) )
		{ 		 
        	$filter_data = array(
			  'job_type' => $this->input->post('job_type', TRUE)   
            );
            $data['master_character_list']  = $this->master_character_m->admin_master_character_list();   
		    $data['master_skill_manage_list']  = $this->master_skill_m->master_skill_manage_list();              
            $data['freelancer_list'] = $this->Profile_basic_m->freelancer_list($filter_data);
            $this->load->view('html/freelancer/freelancer_list_v',$data);
        }         
    }
 
 
 | |||
| 다음글 | 서버 cron tab에서 php파일 실행시 문의드립니다... (5) | ||
| 이전글 | apache와 nginx를 동시에 사용하는 이유.. (2) | ||
| 
                                그동안
                                /
                                2019/07/01 10:36:44 /
                                추천
                                0
                             
                                - 처음 접속 시 전체 목록이 뿌려지는 건 동기(foreach)로 처리되어 있는데, 이것과 무관하게...필터 적용시 비동기 success 영역에 반복문 돌려서 갱신(비우기+append) 해주는 방식으로 수정하려고 하는데....이 방식이 맞는 건지도 궁금합니다.
                             | 
| 
                                배강민
                                /
                                2019/07/01 10:38:46 /
                                추천
                                0
                             기존 동일한 글로 질문하시고 한분께서 답변을 주셨는데, 글을 삭제하고 동일하게 다시 올리신 이유는 뭔가요? 답변을 하셨던 그분의 노고는 무엇이 되는것인지 모르겠네요. | 
| 
                                그동안
                                /
                                2019/07/01 10:54:58 /
                                추천
                                0
                             
                                배강민님, 본문 상단에 사유를 남겼습니다. 답변주신 분의 답변은 제가 댓글에 붙여넣기 할까 하다가  그건 또 아닌듯해서 복사해서 잘 보관하고 있습니다.
                             | 
| 
                                엽토군
                                /
                                2019/07/08 08:46:47 /
                                추천
                                0
                             
                                JS에서 success() 콜백이 알럿 하나인가요? 그렇다변 반응이 없는게 정상이고.. 받은 데이터 html을 실제로 원하는 요소의 innerHTML로 주입해주셔야지요. 그리고 포럼 질문글을 막 삭튀하고 그러시면 안됩니다. 복사 저장이 문제가 아니고 이슈의 이력 트래킹이 안돼 버립니다. |