| 제목 | view에서 ajax호출시 생성자 중복 호출 관련 문제 | ||
|---|---|---|---|
| 카테고리 | CI 2, 3 | ||
| 글쓴이 | 게구리 | 작성시각 | 2017/11/02 11:10:03 | 
| 
                         | 
                |||
| 
                         안녕하세요. 
 제목대로 view에서 ajax로 컨트롤러 메소드 호출시에 생성자가 두 번 호출되는 현상인데 혹시 이게 정상적인 건가요? 
 윈도우10 php 버전 7 ci 버전 3.1.5 아파치 2.4 
 사용중입니다. 
 코드내용은 ---------------------------컨트롤러---------------------------------------------------------------- 
<?php if (! defined('BASEPATH')) exit('No direct script access allowed');
class test_curl extends CI_Controller{ 
public function __construct(){
    parent::__construct();
    echo "test";
    $fp = fopen("C:\\dev\\test_".mt_rand().".txt","w") or die("Unable to open file!");
    fwrite($fp,"123123");    fwrite($fp,"123123");
    fclose($fp);
  }
  public function index(){
    $data = array();
    $this->load->view('test_curl',$data);
  }
  public function test(){
  }
}
-------------------------------------------------------------------------------------------------- 
 ---------------------------뷰--------------------------------------------------------------------- 
<html>
<head></head>
<body>
<div>view입니다</div>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script><script> 
$(document).ready(
  function () {   
    alert();
    $.post("http://localhost/ci/index.php/test_curl/test",'',function (res) {      alert();    });  });
</script>
</body>
</html>
------------------------------------------------------------------------------------------------------ 
 페이지로드시 경로에 파일 하나를 생성하는데 뷰에서 ajax요청시 파일이 하나 더 생성됩니다.. 그래서 위의 페이지 접근시 파일이 두개가 생성되는데요 
 이게 원래 정상적인 동작인 건가요...혹시 코드에 무슨 문제가 있을까요  | 
                |||
| 태그 | php,ci,ajax | ||
| 다음글 | index 없애기 이후 메인->다른페이지이동시 문... (1) | ||
| 이전글 | 액티브 레코드 update에서 테이블과 컬럼이름에 공백... (2) | ||
| 
                             
                                닥
                                /
                                2017/11/02 11:19:50 /
                                추천
                                0
                             
                             | 
                    
| 
                             
                                게구리
                                /
                                2017/11/02 11:31:04 /
                                추천
                                0
                             
                            아하..댓글감사드립니다 로직을 생성자에 넣지않는 방법을 고민해봐야겠네요 ㅠㅠ  | 
                    
우선 클레스의 개념에 대해서 아셔야 할듯 하네요.
__construct 이 함수의 경우 class 가 인스턴스화 될 때, 자동 실행 되는 함수 입니다.
이 함수가 최초 페이지 접근했을 때 __construct를 실행할것이며, 페이지 접근 후에 비동기로 다시 이 클레스에 포함된 메소드를 호출 하시는데,
이때 또 한번 __construct가 실행이 되므로, 그 안에 있는 파일을 생성하는 구문이 총 2번 실행되서 발생하는 문제 입니다.