개발 Q&A

제목 필터 기능 구현 중 동기에서 비동기 방식으로 변경하니, 작동이 안 되네요
카테고리 PHP
글쓴이 그동안 작성시각 2019/07/01 10:33:38
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 8986   RSS

!주말동안 질문 글이 묻힌듯해서 다시 질문 드립니다

 

게시판 목록 상단에 필터 기능이 복잡하게 있는 걸 구현하고 있는데요.

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로 주입해주셔야지요.

그리고 포럼 질문글을 막 삭튀하고 그러시면 안됩니다. 복사 저장이 문제가 아니고 이슈의 이력 트래킹이 안돼 버립니다.