我的控制器中有一个登录功能,之前被调用,但是我做了一些更改而且它们都停止了。
我有一个基本登录信息,其中包含2个输入用户名/密码和提交
//使用Javascript
function initLogin(e) {
e.preventDefault()
var d = {
user: $('#userName').val(),
password: $('#password').val()
}
console.log('test')//gets returned
$.post('/cms/login/',d,function(data) {
console.log(data);//nothing returning
},'json');
}
//控制器
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 :(得分:0)
我看到的一个缺陷是,如果找不到行,$res['id']
将使codeigniter打印出HTML错误,这会使你的json回声无法正常工作。
请尝试if (!empty($res))
。
您可以使用Firebug控制台(Firefox中的插件)查看ajax-request为答案提供的内容,以查看是否有更多的json被回显。
修改强>
注意到这不是真正的问题。会再读一遍。
尝试将class CMS extends CI_Controller
更改为class Cms extends CI_Controller
那是CMS
- > Cms
答案 1 :(得分:0)
嗯,尝试更改URL,我不知道这是否可行(因为它应该在您的控制台中返回了一些错误消息,但错误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");