질문 Q #11364
ajax 간단한 질문 드려도 되겠습니까
beop 2014-05-21 17:28:17
안녕하세요.
또 질문을 올리게되었네요.
ajax 에 대해서 공부하다가 어느정도는 알겠습니다.
근데 잘안되네요.

특히 ajax data에 이해와 그 값을 넘기는게 잘 이해가 안갑니다.

일단 view 입니다.
-------------------------------------------
이값을 post로 보낼 것입니다.
이버튼을 눌렀을때 검색이 되게 하려합니다.

    $( ".bt_search_data" ).click(function() {    
        var f_data = "search_data=" + $(".search_data").val();
        $.ajax({
            type: "post",
            url: "/mms/sp_search",  
            dataType: "json",
            data : f_data,
            complete: function(){
                DB 결과값을 뿌리고싶습니다.
            }
        });
    });

--------------------------------------------


컨트롤러(mms)
-----------------------------------------------

public function sp_search(){
        $search_data = $_POST['search_data'];  ->이렇게 받아 오는 것이 맞는지요.
        $data = $this->mms_m->get_search_data($search_data);
// 단순히 배열에 DB결과를 저장했습니다.
        echo json_encode($data);
        exit;
    }

모델(mms_m)
----------------------------------------------

function get_search_data($user_id, $search_data){
    $sql = "SELECT R_code, R_name, R_mobile FROM member Where        val='".$search_data."'";
     $query = $this->db->query($sql);
     $result = $query->result();
     return $result;
}
--------------------------

많이 길어졌네요

요약하면 DB결과값을 ajax로 뿌려주고 싶어서 공부해가며 짠 코드입니다.
하지만 전혀안되네요. 한 마디의 조언도감사히 듣겠습니다.
 
답변 3
#1 변종원(웅파) 2014-05-21 19:06:40
어디서 안되는지 찾는 것부터 시작하세요.

파이어폭스-파이어버그-넷탭 에서 반환된 데이터를 확인할 수 있습니다.
php에러인지 데이터가 제대로 반환됐는지 확인할 수 있습니다.

그리고 . 과 #을 구분해서 사용하세요. 검색버튼의 경우 유일한 값인 id를 사용하여 $('#idname') 형태로 사용하세요.

$_POST['search_data'];  -> $this->input->post('search_data', true); 형태로 사용하시구요
#2 한대승(불의회상) 2014-05-21 19:26:11
일단 데이터가 잘 나오는지 부터 보는게 좋겠죠.
 
$( ".bt_search_data" ).click(function() {    
        $.ajax({
            type: "post",
            url: "/mms/sp_search",  
//            dataType: "json",
            data : $(".search_data").val(),
            complete: function(data){
                alert(data);
            }
        });
});
데이터 잘 보이면 dataType 주석을 제거해서 json으로 받으면 됩니다.
#3 슘님 2014-05-22 08:49:37
    var f_data = "search_data=" + $(".search_data").val();
이 부분을 
   var f_data = {search_data: $(".
search_data").val()};
로 바꿔보세요.