2011-11-01 34 views
0

我有一个登录功能在我的控制器之前被调用,但我做了一些更改,它都停止了。codeigniter - jQuery的登录函数不调用/返回

我有2个输入用户名/密码和一个基本的登录信息提交

//使用Javascript

//控制器

class CMS extends CI_Controller { 
    function __construct() { 
     parent::__construct(); 

     $this->load->helper('url'); 
     $this->load->library('session'); 

     //$this->_check_if_logged_in(); 
    } 

    private function _check_if_logged_in() { 
     if (!$this->uri->segment(2) || $this->uri->segment(2) == 'login') return FALSE; 
     if ($this->session->userdata('logged_in') != TRUE) redirect('/cms'); 
    } 

    public function index() { 
     if ($this->session->userdata('logged_in') == TRUE) redirect('/cms/home', 'refresh'); 

     $this->load->view('cms/log_in_view'); 
     $this->load->view('cms/parts/footer'); 
    } 

    function login() { 
     echo json_encode(array('test' => 'test'))//doesn't get echoed 

     $data['user_name'] = $this->input->post('user'); 
     $data['pass_word'] = sha1($this->input->post('password')); 

     $this->db->select('id'); 
     $res = $this->db->get_where('login',$data,1)->row_array(); 

     if (is_numeric($res['id'])) { 
      $data['logged_in'] = TRUE; 
      $this->session->set_userdata('logged_in',TRUE); 
     } 

     echo json_encode($res); 
    } 
} 

基本上我注释掉一切,我认为可能会阻碍回复,但这与我所学到的一切背道而驰。

我相信在控制器的登录功能不被调用,即使它没有之前的时候我并没有改变在js任何东西,或登录功能本身

回答

0

一个缺陷我看到的是,如果你会发现没有行,$res['id']会使codeigniter打印出一个HTML错误,这使得你的json回声无法正常工作。

尝试用if (!empty($res))代替。

您可以使用Firebug控制台(Firefox的Addon)检查ajax请求提供了什么答案,以查看json是否被回显。

编辑:

注意到,这不是真正的问题。将再次阅读。

尝试改变class CMS extends CI_Controllerclass Cms extends CI_Controller

也就是说CMS - >Cms

+0

显然没有你的第一个答案是正确的。没有找到$ res ['id'],所以最终会破坏整个功能。谢谢 –

0

嗯,尝试了变化的网址,我不知道这可能是工作(因为它应该已经回到你的一些错误信息你的控制台,就像错误500一样)。

使用“CMS”而不是“cms”应该不成问题,但您可以尝试以及@Robin Castlin指出的那样。

$.post('<?php echo site_url("cms/login");?>',d,function(data) { 
     console.log(data);//nothing returning 
    },"json"); 

,或者,如果不能在这里使用PHP,使用完整的URL:

$.post('http://www.yourwebsite.com/index.php/cms/login',d,function(data) { 
     console.log(data);//nothing returning 
    },"json");