Живой поиск имени пользователя с помощью AJAX/Jquery

Я хочу иметь такую ​​​​функцию javascript:

function isUsernameAvailable(username)
{
   //Code to do an AJAX request and return true/false if
  // the username given is available or not
}

Как это можно сделать с помощью Jquery или Xajax?


person Ali    schedule 23.02.2009    source источник
comment
Вы должны учитывать фактор безопасности: вы не должны использовать это, если имя пользователя не является общедоступным данным. В противном случае это может быть использовано для получения действительного имени пользователя.   -  person Gumbo    schedule 23.02.2009


Ответы (1)


Большой выигрыш при использовании AJAX заключается в том, что он асинхронный. Вы запрашиваете синхронный вызов функции. Это можно сделать, но это может заблокировать браузер, пока он ожидает сервера.

Использование jquery:

function isUsernameAvailable(username) {
    var available;
    $.ajax({
        url: "checkusername.php",
        data: {name: username},
        async: false, // this makes the ajax-call blocking
        dataType: 'json',
        success: function (response) {
            available = response.available;
        }
     });
     return available;
}

Затем ваш php-код должен проверить базу данных и вернуть

{available: true}

если имя нормальное.

Тем не менее, вам, вероятно, следует делать это асинхронно. Вот так:

function checkUsernameAvailability(username) {
    $.getJSON("checkusername.php", {name: username}, function (response) {
        if (!response.available) {
            alert("Sorry, but that username isn't available.");
        }
    });
}
person Magnar    schedule 23.02.2009
comment
Я сделал что-то похожее, но проще, используя $.post() для вызова страницы, и страница выводит только 0 или 1;) - person Ali; 23.02.2009
comment
Возможно, если бы вы не сделали это проще, это действительно сработало бы. Уточните свой следующий вопрос: stackoverflow.com/questions/577564/ - person Magnar; 23.02.2009