jQuery.ajax / CodeIgniter (PHP): возвращая TRUE / FALSE в PHP, как я могу получить jQuery, чтобы увидеть это? - PullRequest
0 голосов
/ 14 июля 2010

Я построил функцию для проверки имени пользователя.Я использую его как обратный вызов для проверки формы в CodeIgniter, и он работает хорошо.Тем не менее, я хотел бы также использовать его с AJAX для проверки на лету, если у пользователя включен JS.Таким образом, мой контроллер имеет следующее:

function check_username($s = FALSE)
{
    if ($s):
        $this->db_common->like('username', $s);
        $query = $this->db_common->get('users');

        if ($query->num_rows() > 0):
            $this->form_validation->set_message('check_username', 'Username taken. Choose another!');
            return FALSE;
        else:
            return TRUE;
        endif;
    else:
        echo 'Username required';
    endif;
}

И мой HTML / JS таков:

$(document).ready(function()
{
var delayed;
$("#username").keyup(function()
{
    clearTimeout(delayed);
    var value = this.value;
    if (value)
    {
        delayed = setTimeout(function() {
            $.ajax
            ({
                type: "POST",
                url: "<?php echo base_url(); ?>auth/check_username/",
                data: $("#username").val(),
                success: function(html)
                {
                    $("#username_check").html(html);
                }
            });
        }, 100);
    }
});
});

По сути, я возвращаю FALSE, если имя пользователя существует, и TRUE, если оно существует.Как мне заставить мой jQuery AJAX увидеть это?По сути, я хочу, чтобы jQuery проверил, ложно ли это, а затем произнесите «имя пользователя существует», а если это правда, то «имя пользователя в порядке».

Ответы [ 4 ]

3 голосов
/ 14 июля 2010

Сделайте что-то вроде следующего:

echo 'ok';
return TRUE;

Причина этого заключается в том, что jQuery не может видеть логические значения, возвращаемые PHP, поскольку они не отправляются в выходные данные браузера.

1 голос
/ 26 октября 2011

Есть способ сделать это с помощью PHP и jQuery. Вот пример ...

просто сделайте, чтобы ваш php-скрипт возвратил true или false.

PHP-> echo true; или эхо ложное;

$.post("your_url/your_class/your_method", {  } ,
function(data) {

    if(data) alert('true');
    else alert('false');

}, "json")
.error(function() { //alert("an AJAX error occurred!"); 
});
1 голос
/ 14 июля 2010

Я бы возвратил true или false как логическое значение JSON из вашего PHP-скрипта и использовал бы функцию eval () javascript, чтобы оценить это как переменную javascript.

1 голос
/ 14 июля 2010

По сути, я возвращаю FALSE, если имя пользователя существует, и TRUE, если оно существует.Как мне заставить мой jQuery AJAX увидеть это?

Вы не можете напрямую.Я бы вывел 0 или 1 вместо этого.

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