| 제목 | ajax를 이용하여 정보를 받아 오려고합니다. | ||
|---|---|---|---|
| 글쓴이 | trace | 작성시각 | 2016/09/29 23:06:07 | 
| 
                         | 
                |||
                        
//view 페이지//
<a type="button" id="feelBtn" class="btn btn-primary" data-target="#feelModal" data-toggle="modal"  data-backdrop="true" data-achid="2" data-brd="b-c-2" data-remote=''>      
             button </a> 
<div class="modal" id="feelModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" >
  <div class="modal-dialog modal-wide">
        <div class="modal-content">
        <div class="modal-body">
       
        </div>                
         </div>
         
   </div>             
</div>
<script type="text/javascript">
    $(document).ready(function(){
        $("#feelBtn").click(function(){
             var achid= $(this).data("achid");
             var brdkey= $(this).data("brd");
            $.ajax({
            url : "www.abc.com/url/posturl",
            type : 'POST',
            data : {ach_id: achid,
                    brd_key: brdkey,
                    csrf_test_name: cb_csrf_hash                
},
            dataType: 'json',
            success: function(data){
                $(this).data("remote",data);
            }
            
            });
        })
    })
</script>
//controller//
 public function posturl()
    {
    	
    	$brd_key = $this->input->post('ach_id');
    	$ach_id = (int) $this->input->post('brd_key');
        $this ->load->model('Url_model');
    	$post_id = $this->Url_model->posturl($ach_id);
    	   
    	$result = post_url($brd_key, $post_id);
        exit(json_encode($result));
}
        
//model//
class Url_model extends CB_Model
{
   
    public $_table = 'post';
  
    public $primary_key = 'post_id'; 
    public $allow_order = array('post_num, post_reply', 'post_datetime desc', 'post_datetime asc', 'post_hit desc', 'post_hit asc', 'post_comment_count desc', 'post_comment_count asc', 'post_comment_updated_datetime desc', 'post_comment_updated_datetime asc', 'post_like desc', 'post_like asc', 'post_id desc');
    function __construct()
    {
        parent::__construct();
    }
        public function posturl($ach_id=''){
            $user_id = $this->member->is_member();
        $this->db->select('post_id');
        $this->db->from($this->_table);
        $this->db->where('mem_id',$user_id);
        $this->db->where('ach_id',$ach_id);
        $qry= $this->db->get();
        $result= $qry->row();
        return $result;
        }
    }
        
    //button을 클릭했을 때 controller로 data인 achid와 brdkey값이 안넘어 가는 것 같습니다. 도대체 이유를 모르겠어요 ㅠㅠ//
//제가 지향 하는 결과는 controller에서 출력되는 $result값이 www.abc.com/post/3 이라는 값이 view에 전달되어 modal의 data-remote 값이 이 결과 값이 되게 하여 modal 창을 띄우는 것입니다.// 
  | 
                |||
| 다음글 | ajax string url에 대해 질문 있습니다. (1) | ||
| 이전글 | 음 여기는 제작의뢰 그런 게시판 없나여? (4) | ||
| 
                             
                                한대승(불의회상)
                                /
                                2016/09/29 23:36:43 /
                                추천
                                0
                             
                            
                                $(this).data("achid") 와 $(this).data("brd") 이 부분에 문제가 있는거 같군요.
                             
                         | 
                    ||||||||||||
| 
                             
                                trace
                                /
                                2016/09/29 23:44:14 /
                                추천
                                0
                             
                            @한대승(불의회상) 답변 감사합니다. 제가 알기로 <a 태그의 id="feelbtn" data-achid ="2" data-brd="b-c-2">라고 되어있을때,  $("#feelBtn").click(function(){             var achid= $(this).data("achid");             var brdkey= $(this).data("brd");이 부분에서 achid = 2값이 불러오는게 아닌가요?  | 
                    ||||||||||||
| 
                             
                                trace
                                /
                                2016/09/30 00:02:30 /
                                추천
                                0
                             
                            제 짧은 생각에는 controller 안의 이 부분이 뭔가 문제가 있는 것 같습니다. 
 $brd_key = $this->input->post('ach_id');
        $ach_id = (int) $this->input->post('brd_key');
그 이유는 firebug로 보면 post 값이 
 
 다음 과 같이 나오기 때문입니다.  | 
                    ||||||||||||
| 
                             
                                한대승(불의회상)
                                /
                                2016/09/30 07:05:39 /
                                추천
                                0
                             
                            @trace 그렇군요. 소스코드가 다 보이지 않아 그 부분을 간과 한 것 같습니다. firebug로 값을 모니터링 하실 수 있다면, $this->output->enable_profiler() 가 도움이 될 것 같습니다. 
  | 
                    ||||||||||||
| 
                             
                                trace
                                /
                                2016/09/30 08:46:08 /
                                추천
                                0
                             
                            
                                @한대승(불의회상) 답변 감사합니다. 퇴근 후에 집에가서 한번 해보겠습니다.! 좋은 금요일 되세요
                             
                         | 
                    ||||||||||||
| 
                             
                                kaido
                                /
                                2016/09/30 08:59:18 /
                                추천
                                0
                             
                            제 기억이 맞다면 var_dump($ach_id); 찍어보시면 예상하지 못한 값이 들어가 계실겁니다. 스트링 값을 넘겼는데 int 캐스팅 넣으면 0 으로 치환합니다. 그리고 php의 오토 캐스팅에 의해서 0 은 false 이나 null 으로 처리해서, 만일 해당 인자값이 필수 라면 원치 않는 결과값이 나오게 됩니다. 
  | 
                    ||||||||||||
| 
                             
                                trace
                                /
                                2016/09/30 09:18:22 /
                                추천
                                0
                             
                            @kaido 좋은 아침입니다.! 답변 감사합니다. 제 짧은 지식으로 (int)가 string으로 온 숫자를 int 숫자로 바꾸는 기능이 있는 것 아닌가요? 해당 인자값이 필수입니다  | 
                    ||||||||||||
| 
                             
                                한대승(불의회상)
                                /
                                2016/09/30 09:28:22 /
                                추천
                                0
                             
                            
                                @trace 맞습니다. 하지만 PHP는 연산을 위해 굳이 type 하지 않아도 됩니다. intval() 이라는 전용 함수도 있구요.
                             
                         | 
                    ||||||||||||
| 
                             
                                kaido
                                /
                                2016/09/30 09:37:18 /
                                추천
                                0
                             
                            아 저도 헷깔렸네요 ㅋㅋㅋ var_dump($brd); 찍어보세요. $brd 를 인트형으로 변환 시키고 계십니다. 
 또한 오토캐스팅에 의해서 int 형인지 string 형인지는 자동으로 구분지어 주기도 합니다. 문제는 강제로 형변환을 할 경우 타입이 맞지 않으면 0 으로 바꿔서 넣어줍니다. 이부분은 원인 파트이고... 
 echo $str = $this->db->last_query(); 해보시면 문제가 나올거라 보입니다.  | 
                    ||||||||||||
| 
                             
                                trace
                                /
                                2016/09/30 09:45:01 /
                                추천
                                0
                             
                            @kaido 아 죄송합니다 제가 글을 잘못 작성하여 혼란시켜드렸습니다. 
//위글에는//
  $brd_key = $this->input->post('ach_id');
      $ach_id = (int) $this->input->post('brd_key');
// 이렇게 되어있는데//
 $brd_key = $this->input->post('brd_key');
      $ach_id = (int) $this->input->post('ach_id');
//로 원래는 되어있습니다.//
밑의 구문은 퇴근 후 집에가서 한번 해보겠습니다 감사합니다.!  | 
                    ||||||||||||
| 
                             
                                trace
                                /
                                2016/09/30 09:54:00 /
                                추천
                                0
                             
                            @한대승(불의회상) 아 그렇군요! 전 연산하기 위해서 문자를 숫자로 바꿔야 되는줄 알았습니다. ㅠ 하드웨어 하다가 용돈좀 벌어보겠다고 웹서비스 개인적으로 구성중인데 힘드네요 ㅎㅎ  | 
                    ||||||||||||
| 
                             
                                한대승(불의회상)
                                /
                                2016/09/30 10:05:36 /
                                추천
                                0
                             
                            
                                @trace (int)가 intval() 함수 보다 속도가 빨라 명시적으로 타입 캐스팅을 할 때는 자주 사용됩니다.
                             
                         | 
                    ||||||||||||