2016-04-25 5 views
1

私はコントローラにcodeigniterファイルを持っています。私はjQueryを使ってajaxからコンストラクタのパラメータを渡したいと思います。どのように$アクションの値を渡すことができますか?どのように私はJquery ajaxを介してcodeigniterにコンストラクタパラメータを渡すことができます

function __construct($action) 
{ 
    $this->json['status']=false; 
    if (preg_match("/json/i", $_SERVER['HTTP_ACCEPT'], $match)) 
     $this->requestType = "JSON"; 
    switch ($action) { 
     case 'login': $this->login($_REQUEST);break; 
     case 'addSocialPages': $this->setSocialLinks($_REQUEST);break; 
     case 'get_info': $this->setSocialinfo($_REQUEST);break; 
     case 'loginfromfront': $this->loginFront($_REQUEST);break; 
     default: 
      # code... 
      break; 
    } 
    if($this->requestType=="JSON") 
     echo json_encode($this->json); 
} 

答えて

0

あなたは本当にそれを行うことはできません。
コントローラはコアシステムで構築されており、初期化時にコンストラクタに触れることはできません(コアコード:$ CI = new $ class(); //呼び出し時にパラメータがありません)。コンストラクタはむしろ、ハードワークのためではなく、初期化することです。

ところで、あなたのコンセプトは本当に意味をなさない(コンストラクタですべてを行うために)。

CodeIgniterにはこのように、/プロセス要求を実行するための独自の方法があります:

class Default extends CI_Controller { 

    protected function send_json_output($response) { 
     $this->output->set_content_type('application/json'); 
     echo json_encode($response); 
    } 

    public function login() { 
     $username = $this->input->post('username'); 
     $password = $this->input->post('password'); 
     // your login code 
     $response = array('succes' => true); 
     $this->send_json_output($response); 
    } 
    public function get_info() { 
     $user_id = $this->input->post('user_id'); 
     // your get_info code 
     $user_name = $this->get_username_by_id($user_id); 
     $response = array('username' => $user_name); 
     $this->send_json_output($response); 
    } 
    public function login_from_front() { 
     // your login_from_front code 
    } 


} 

JS

// call the login action: 
jQuery.post(
    '<?php echo site_url('default/login'); ?>', 
    {username:'frank', password:1234}, 
    function(data) { 
     if(data.success) { 
      alert('You are logged in'); 
     } 
    }, 
    'json' 
); 

// call the get_info action: 
jQuery.post(
    '<?php echo site_url('default/get_info'); ?>', 
    {user_id:123}, 
    function(data) { 
     alert(data.username); 
    }, 
    'json' 
); 
関連する問題