2009-02-23 8 views
1

Je veux avoir une fonction javascript comme celle-ci:recherche de nom d'utilisateur en direct avec AJAX/Jquery

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

Comment cela peut-il être accompli en utilisant Jquery ou Xajax?

+0

Vous devriez considérer le facteur de sécurité: Vous ne devriez pas utiliser si le nom d'utilisateur n'est pas une donnée publique. Sinon, cela pourrait être abusé pour récupérer un nom d'utilisateur valide. – Gumbo

Répondre

3

La grande victoire lors de l'utilisation d'AJAX est qu'elle est asynchrone. Vous demandez un appel de fonction synchrone. Cela peut être fait, mais cela peut bloquer le navigateur pendant qu'il attend le serveur.

En utilisant 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; 
} 

Votre code PHP doit alors vérifier la base de données, et le retour

{available: true} 

si le nom est ok.

Cela dit, vous devriez probablement le faire de manière asynchrone. Comme si:

function checkUsernameAvailability(username) { 
    $.getJSON("checkusername.php", {name: username}, function (response) { 
     if (!response.available) { 
      alert("Sorry, but that username isn't available."); 
     } 
    }); 
} 
+0

J'ai fait quelque chose de similaire mais plus simple, en utilisant $ .post() pour appeler une page, et la page ne fait qu'échouer 0 ou 1;) –

+0

Peut-être que si vous n'aviez pas fait cela plus simplement, cela fonctionnerait. Réf votre question suivante: http://stackoverflow.com/questions/577564/javascript-variable-scoping-question – Magnar

Questions connexes