J'ai écrit cette fonction dans jQuery:Comment synchroniser les valeurs de la fonction de retour dans jQuery?
function checkAvailability(value) {
var result = true;
$.getJSON("registration/availability", { username: value }, function(availability) {
if (!availability)
result = false;
alert("in getJSON: " + result);
});
alert(result);
return result;
}
J'ai eu alerte de « getJSON » après cette seconde. Pourquoi est-ce arrivé de cette façon?
J'ai le projet Spring MVC et la méthode Controller qui vérifie la disponibilité du nom d'utilisateur. La méthode du contrôleur fonctionne correctement. Mais je reçois le résultat final trop tard. Comment puis-je le synchroniser pour retourner correctement la valeur dans ma fonction?
EDIT
J'utilise cette fonction dans jQuery valider. J'ai extrait la fonction checkAvailability()
pendant mon test.
$.validator.addMethod("checkAvailability", function(value, element, param) {
var das = checkAvailability(value);
return das;
}, jQuery.format("Someone already has that username. Please try another one."));
Et voici ma forme validate:
$(".form").validate({
rules: {
username: {
checkAvailability: true
},
....
},
messages: {
}
});
EDIT 2
Ceci est ma méthode Controller. Il renvoie une valeur booléenne. Si le nom d'utilisateur était pris, il retournerait une valeur erronée.
@RequestMapping(value="/registration/availability", method = RequestMethod.POST)
public @ResponseBody boolean getAvailability(@RequestParam String username) {
List<User> users = getAllUsers();
for (User user : users) {
if (user.getUsername().equals(username)) {
return false;
}
}
return true;
}
Merci un milion pour votre réponse. J'ai édité ma question. Je l'utilise dans jQuery validate. – woyaru
Mise à jour de la réponse avec un lien vers la documentation de validation de jquery. Il y a une option qui est destinée à gérer votre scénario exact. –
Il semble très similaire. Je viens de tester cette solution. Mais cela ne semble pas fonctionner. Je me demande quelle méthode dans le contrôleur ou la fonction de php doivent retourner. – woyaru