Voici ce que j'utilise à cette fin:
JAVASCRIPT:
$(document).ready(function() {
$("#username").blur(function() {
//remove all the class add the messagebox classes and start fading
$("#username_status").removeClass().addClass('username_status').text('Checking username').fadeIn("slow");
//verify entered username
$.post("path to php file",{ user_name:$(this).val() } ,function(data) {
// username not avaiable
if (data=='no') {
$("#username_status").fadeTo(200,0.1,function() {
$(this).html('Username in use').addClass('username_status_error').fadeTo(900,1);
});
// username available
}else if (data=='yes') {
$("#username_status").fadeTo(200,0.1,function() {
$(this).html('username available').addClass('username_status_ok').fadeTo(900,1);
});
// username field empty
}else if (data=='empty') {
$("#username_status").fadeTo(200,0.1,function() {
$(this).html('username field is empty').addClass('username_status_error').fadeTo(900,1);
});
// username check error
}else{
$("#username_status").fadeTo(200,0.1,function() {
$(this).html('fail to check username').addClass('username_status_error').fadeTo(900,1);
});
}
});
});
});
PHP FICHIER DE POST avec AJAX:
<?php
require_once ('db_connect.php'); // include the database connection
if ($_POST['user_name']!="") {
// check if username is available from login table
$query = sprintf(" select * from login where username = '%s' ", mysql_real_escape_string($_POST['user_name']));
if (mysql_query($query)) {
if (mysql_num_rows(mysql_query($query))>0) {
echo "no";
}else{
echo "yes";
}
}else{
echo "error";
}
}else{
echo "empty";
}
?>
ET HTML FORMULAIRE:
<form name="login-form" id="login-form" class="clients_form" method="post" action="form post link">
<ol>
<li>
<label for="login_usr" class="OF_name">Username:<span class="mandatory">*</span><br></label>
<input tabindex="1" accesskey="u" name="username" type="text" maxlength="30" id="username">
</li>
<li>
<label for="login_pwd" class="OF_email">Password:<span class="mandatory">*</span><br></label>
<input tabindex="2" accesskey="p" name="password" type="password" maxlength="15" id="password">
</li>
<li class="buttons">
<input class="btn" tabindex="3" accesskey="l" type="submit" name="cmdlogin" value="Login">
<input class="btn" name="cancel" type="button" value="Cancel" onclick="location.href='cancel link'">
</li>
</ol>
<br><br><br>
</form>
Ceci est un exemple simple que je l'ai créé pour vous montrer, mais devrait fonctionner très bien ...
Lorsque l'utilisateur quitte le nom d'utilisateur domaine, l'AJAX publiera le fichier PHP pour vérifier la base de données, si l'utilisateur retourne au champ de l'utilisateur, encore une fois, wend it laisse, Ajax postera.
Espérons que cela aide!
Excellente solution! – Kirzilla
http://stackoverflow.com/questions/3235517/check-username-availability-on-fly/3235551#3235551 est de loin meilleur. rien d'autre ne sera envoyé/reçu du serveur - tout est fait sur le client –
@Andreas - Pour moi, il ne semble pas que l'ajout du nom d'utilisateur surcharge la réponse, mais plutôt une réponse complète à la place. De même, dans une requête de saisie semi-automatique, l'inclusion de la requête dans la réponse est un modèle commun et quelques octets supplémentaires ne sont généralement pas considérés comme une charge importante à moins que vous ne travailliez à l'échelle de Google. – Anurag