CI 묻고 답하기

제목 ajax 문의드립니다.
글쓴이 appo 작성시각 2015/07/16 19:40:23
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 15766   RSS
전에 문의했던 것 다 해결했는데

$.ajax({
type:"POST",
data : {"id" : $("#id").val()},
url:"http://127.0.0.1/index.php/blog/a_ajax",
dataType:"json",
success:function(data) {
alert(result[0].id);
$("#Select").php("<option value=''>선택</option>");
for( var i=0 ; i < json.length ; i++){
$("#Select").append("<option value='"+json[i].id+"' >"+json[i].name+"</option>");
}
}
});

컨트롤러
function a_ajax(){
$data = $this->input->post('id');
$result = $this->Ad_m->ajaxA($data);
-----------------------
$this->output
        ->set_content_type('application/json')
        ->set_output(json_encode($result));
-----------------------
}

모델
function ajaxA($data)
{
  $sql = "select id, name from admin where id='$data' order by name";
$query = $this->db->query($sql);
if ($query->num_rows() > 0)
{
  return $query->result_array();
}
}
}

배열로 컨트롤러에 받아진 것까지는 되는데
-------------------
내용
-------------------
컨트롤러
이 부분이 어렵습니다. 그냥 echo json_encode($result);로 하든 뭘하든간에
파이어폭스로 봤을때 뷰에서 표현하는 방법을 모르겠습니다.
짧은 시간에 제이쿼리부터 다 보려니 어렵네요. 이것까지 되면 파일업다운 해보고
그다음부턴 대부분 처리될거같은데 삼일째 삽질하네요...
리맵은 웅파님의
public function _remap($method)
 {
   if (!strpos($method, '_ajax'))
   {
이걸 쓰고 있습니다.
근데 헤더 푸터는 표현되는데 어떡게 해야할지 감이 안잡히네요...
 다음글 controller 안에 폴더 깊이가 어느까지 되나요?... (5)
 이전글 htc 파일 업로드 관련 질문입니다. (2)

댓글

letsgolee / 2015/07/18 21:39:06 / 추천 0
모델에서 단 하나의 데이터만 받는 구조가 맞나요? 지금 상황은 단 한 개의 데이터만 보내는 구조입니다. 
그런데 $.ajax의 success의 코드를 보면 여러 명의 admin을 받는 것같네요. 여러명을 받는 것이 맞다면 먼저 모델 함수를 수정해야 합니다.
[code]
function ajaxA($data)
{
    $sql = "select id, name from admin where id='$data' order by name";
    $query = $this->db->query($sql);
    if ($query->num_rows() > 0)
    {
        $list = array();
        while ($query->result_array() as $row) {
            $list[] = $row;
        }
        return $list;
    }
    return array();
}
[/code]

그리고 $.ajax 함수도 다음처럼 수정하면 됩니다:
[code]
$.ajax({
    type:"POST",
    data : {"id" : $("#id").val()},
    url:"http://127.0.0.1/index.php/blog/a_ajax",
    dataType:"json",
    success:function(data) {
        var result = $.parseJSON(data);
        //alert(result[0].id);
        $("#Select").html("<option value=''>선택</option>");
        for( var i=0 ; i < result.length ; i++){
            $("#Select").append("<option value='"+result[i].id+"' >"+result[i].name+"</option>");
        }
    }
});
[/code]
$("#Select").php에서 php는 html을 말하는 거겠죠?
appo / 2015/07/19 01:48:27 / 추천 0
네 뷰파일이라 php도 넣어보고 html도 넣어보고 이것저것 다해보고 있습니다.
말씀하신 내용으로 바꾸니

Message: syntax error, unexpected 'as' (T_AS)

Filename: models/Admin_m.php

Line Number: 134

이런 에러가 뜨네요 ㅠㅠ
답변해주신 내용으로 삽질해보겠습니다. 감사합니다.
제가 궁금했던 부분이 var result = $.parseJSON(data); 이부분이었거든요. json 검색해도 80%는 서로 중복되는 내용들이라...

letsgolee / 2015/07/19 09:51:45 / 추천 0
while을 foreach로 고치세요. 맨날 쓰던거라 foreach인줄 알고 원래의 소스를 수정안했네요.
appo / 2015/07/20 17:48:28 / 추천 0
저렇게 해도 안되서 이리저리 고쳐보고 있습니다. 모델에서 값 받아오는데 뷰 파일에서 문제인거같네요.