codeigniter - функция входа в jquery не вызывает / не возвращает - PullRequest
0 голосов
/ 02 ноября 2011

У меня есть функция входа в систему в моем контроллере, которую вызывали раньше, но я сделал некоторые изменения, и все просто остановилось.

У меня есть базовый логин с 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 или самой функции входа в систему

Ответы [ 2 ]

0 голосов
/ 02 ноября 2011

Хм, попробуйте изменить 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");
0 голосов
/ 02 ноября 2011

Я вижу один недостаток: если вы не найдете строки, $res['id'] заставит codeigniter распечатать ошибку HTML, из-за чего ваш json-эхо не будет работать должным образом.

Попробуйте if (!empty($res)).

Вы можете проверить с помощью Firebug Console (Addon в Firefox), что дал ajax-запрос для ответа, чтобы увидеть, было ли больше, чем json, эходировано.

Edit:

Заметил, что это не настоящая проблема. Будем читать снова.

Попробуйте изменить class CMS extends CI_Controller на class Cms extends CI_Controller

То есть CMS -> Cms

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...