Проверка JQuery с проблемой Codeigniter - PullRequest
2 голосов
/ 09 ноября 2010


У меня есть поле ввода, которое я хотел бы динамически проверить, пока пользователь печатает ... Я использую Codeigniter и считаю, что у меня возникла проблема с URI ... Позвольте мне показать вам код ...

HTML / PHP:
<input type="text" id="username"> <span id="validateUsername"></span>

JQuery:

$(document).ready(function() {
    var validateUsername = $('#validateUsername');
        $('#username').keyup(function () {
        var t = this; 

        if (this.value != this.lastValue) {
            if (this.timer) clearTimeout(this.timer);
            validateUsername.removeClass('error').html('<img src="<?php echo site_url("public/images"); ?>/ajax-loader.gif" height="16" width="16" /> checking availability...');
            this.timer = setTimeout(function () {
                $.ajax({
                    url: '<?php echo base_url(); ?>register/check_user/' + t.value,
                    dataType: 'json',
                    type: 'POST',
                    success: function (j) {
                        validateUsername.html(j.msg);
                    }
                });
            }, 200);

            this.lastValue = this.value;
        }
    });
});

Мой контроллер codeigniter имеет очень простую функцию:

function check_user($username) {
    // var_dumping stuff goes here
}

Там я просто пытаюсь изменить var_dump разными вещами (такими как $ _SERVER, $ _REQUEST, $ username), но я думаю, что мой скрипт даже не достигает этого контроллера ...

Я пытался изменить строку url: '<?php echo base_url(); ?>register/check_user/' + t.value, в моем скрипте jQuery, но, похоже, ни одна комбинация не работает. Например:
url: '<?php echo site_url('register/check_user/'); ?>' + t.value,
url: 'index.php/register/check_user/' + t.value,
url: 'register/check_user/' + t.value,

... что бы я ни пытался, мой validateUsername span показывает только сообщение «Проверка доступности».

Я пробовал свой скрипт в Chrome, Safari и IE8. Версия PHP 5.3.0 и jQuery 1.4.2 ...

Есть идеи, что здесь может быть не так?

Заранее спасибо за любую помощь!

1 Ответ

4 голосов
/ 09 ноября 2010

Я вижу, что может быть несколько проблем с вашим кодом:

правильно ли установлены маршруты?

В вашем CodeIgniter маршруты выполните следующие действия:

$route['register/check_user/(:any)'] =" register/check_user/$1";

В вашем контроллере CodeIgniter получите доступ к переменной, используя это:

function check_user() {
    $username = $this->uri->segment(3);
    var_dump($username);
    // var_dumping stuff goes here
}

Кроме того, я бы предложил использовать jQuery Text Change event , это отлично сработаловместо использования setTimeouts и keyup.

Пример:

$('#username').bind('textchange', function () {
   $.post('<?php echo base_url(); ?>register/check_user/' + this.value, function(data) {
      $('#validateUsername').html(data);
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...