CI 묻고 답하기

제목 ajax 통신 문의드립니다 ㅠ.ㅠ
카테고리 CI 2, 3
글쓴이 코드신되기 작성시각 2018/05/18 10:04:07
댓글 : 15 추천 : 0 스크랩 : 0 조회수 : 14171   RSS

컨트롤러

public function _remap($method)

{

$rgParams['class']='Json';

$this->output->set_header('Content-Type: application/json; charset=utf-8');

         if(method_exists($this, $method))

          {

              $this->{"{$method}"}();

          }

}

public function historyMenuList(){

$this->load->library('form_validation');

$rgParams['menu_idx'] = $this->input->POST('menu_idx', TRUE);

$result = $this->admin_service->historyMenuList($rgParams);

echo json_encode($result);

}

=======================================================================================

 

뷰페이지

  var url = "/json/historyMenuList";
      var param = {
        menu_idx : $(this).val()
      };
    
      $.ajax({
            type:"POST",  
            url :url,
            data:param, // data를 json 형식으로 파싱하여 전달,
            dataType : "json",//받을 데이터방식
            success:function(args){ 
                console.log(args);
            },   
            error:function(e){  
            } 

      });  

 

이렇게 보내는데 컨트롤러에 로그를 찍어보면 나오는데..

 

왜 뷰페이지에는 응답이 없을까요?ㅠㅠ

 

 

 

 다음글 [문의]hooks.php에 등록 된 부분 핸들링 방법 (2)
 이전글 기본로직에서 로그인세션처리가 잘 안됩니다. (2)

댓글

곰멍 / 2018/05/18 11:25:20 / 추천 0
success:function(args){
              console.log(args);
        },  

ajax 요청이 성공하면 여기 부분을 실행하는데 현재는 PHP에서 보내온 값을 개발자 도구의 콘솔에서만 볼 수 있는 문법만 사용하셨습니다. 별도로 DOM을 조작하셔야 될 것 같습니다.

 

배강민 / 2018/05/18 11:26:18 / 추천 0

http://주소//json/historyMenuList를 직접 실행해보면 원하는값을 제대로 echo하는데, js로 호출해보면 아무것도 없다는건가요?

404인건가요? 500인건가요?

코드신되기 / 2018/05/18 13:08:12 / 추천 0

안녕하세요 404도 아니고 500도 아닙니다.

컨트롤러에서 디비까지 들어가고 그정보를 

$result = $this->admin_service->historyMenuList($rgParams);	
echo json_encode($result);

이렇게 해서 다시 요청에 대한 응답을 주는데요.

디비까지는 들어가는거 확인되는데 페이지에서 응답이 아예 들어오지않습니다.

console로 직은거는 확인용으로 해놓은겁니다.

왜 안되는지 미쳐버리겠네요ㅜㅜ도와주세요.

코드신되기 / 2018/05/18 13:09:49 / 추천 0

http://주소//json/historyMenuList 이렇게 치면 정상적으로 데이터 가져옵니다

곰멍 / 2018/05/18 13:27:22 / 추천 0
이 부분은 스크립트 쪽에서 어떤 상황에 실행되는 건지, 콘솔에 혹시 다른 에러가 보여지고 있지 않은지 확인을 해봐야 될 것 같습니다.
코드신되기 / 2018/05/18 13:33:02 / 추천 0

text로 하니 데이터를 가져오네요.

근데 ajax 에러를 찍어보니 에러가 아래와 같이  로그가찍히네요

구글에쳐봐도 어떻게 해결해야하는지..잘모르겠네요ㅜㅜ

에러로그는 아래와같습니다.

Uncaught SyntaxError: Unexpected token in JSON at position 0

코드신되기 / 2018/05/18 13:33:39 / 추천 0
분명히 컨트롤러단에서 json_encode로 묶어서 내렸는데 왜 json으로 못받는지 궁금합니다.ㅜㅜ
곰멍 / 2018/05/18 13:34:43 / 추천 0
var_dump($result); 로 어떤 데이터가 나왔는지 확인해 보셔야 될 것 같습니다.
코드신되기 / 2018/05/18 13:39:27 / 추천 0
var_dump($result); 이걸 컨트롤러단에서 뿌려야하나요? 
곰멍 / 2018/05/18 13:39:47 / 추천 0
코드신되기 / 2018/05/18 13:40:36 / 추천 0
[{"no":"4","menu_idx":"8","history_year":"1972","reg_date":"2018-04-10 15:30:34","udp_date":"2018-05-15 12:48:20"},{"no":"8","menu_idx":"8","history_year":"1971","reg_date":"2018-04-10 15:30:34","udp_date":"2018-05-15 12:45:28"},{"no":"9","menu_idx":"8","history_year":"1970","reg_date":"2018-04-10 15:30:34","udp_date":"2018-05-17 22:33:13"}]

 이렇게 정상적으로 데이터는 가져오는데 이걸 왜 페이지에서 응답으로 못가져오는지 휴..미치겠네요

코드신되기 / 2018/05/18 13:42:33 / 추천 0

컨트롤러단에 var_dump로 하니 아래와 같이 나옵니다. 

Array
(
    [0] => Array
        (
            [no] => 4
            [menu_idx] => 8
            [history_year] => 1972
            [reg_date] => 2018-04-10 15:30:34
            [udp_date] => 2018-05-15 12:48:20
        )

    [1] => Array
        (
            [no] => 8
            [menu_idx] => 8
            [history_year] => 1971
            [reg_date] => 2018-04-10 15:30:34
            [udp_date] => 2018-05-15 12:45:28
        )

    [2] => Array
        (
            [no] => 9
            [menu_idx] => 8
            [history_year] => 1970
            [reg_date] => 2018-04-10 15:30:34
            [udp_date] => 2018-05-17 22:33:13
        )

)

 

곰멍 / 2018/05/18 14:00:22 / 추천 0
success 부분에서의 처리는 어떻게 되있는지 혹시 알 수 있을까요?
코드신되기 / 2018/05/18 14:02:30 / 추천 0

아예 들어오지 않습니다.

 

ajax쪽에 

 success:function(args){ 
        console.log(args);
   
,    error:function(request,status,error){
               console.log("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
   }

이렇게 했는데 error쪽으로만 빠집니다.

곰멍 / 2018/05/18 14:31:54 / 추천 0
크롬이시면 개발자도구 키시고 network에서 historyMenuList 주소값으로 요청하는 부분을 클릭해서 headers response 부분을 확인해 보셔야 될 것 같습니다