Je pense que mon programme saute le résultat de l'appel JSON.
Est-il possible de faire une fonction de fermeture ici ou d'attendre le programme pour que l'appel JSON soit revenir?
4 Réponses :
Yeap, USERNAME_NOT_DUplicate code> Il suffit de renvoyer
false code> immédiatement car
getjson code> est asynchrone (c.-à-d. Non-blocage). L'instruction code> VRAI code> vient simplement renvoie
true code> à partir du gestionnaire de réponse.
Normalement, vous ne devriez pas faire des appels aussi bloquants que vous essayez d'atteindre. Je suppose que vous pouvez envisager de vous souvenir d'un état de la demande dans le monde entier. P>
Puis-je faire getjson non synchrone?
@bob - Nope. Serait une bonne option pour JQuery à ajouter cependant.
@bob $. getjson code> est un simple raccourci d'un équivalent
$. Ajax code> fonction, qui permet d'envoyer des demandes synchrones. Voir
ASYNC CODE> Réglage de API.JQUERY.com/JQUERY.AJAX. Alors ... la réponse est 'Oui, pas
$. Getjson code> mais
$. Ajax code>'
Le $. getjson () code> L'appel de l'API est asynchrone. Vous pouvez le rendre synchronisé en utilisant
$. Ajax () code> de cette façon:
Une partie clé de cela pour moi était le var rslt = false; J'essayais de retourner vrai / faux de l'intérieur du succès: qui ne retournait pas de Bool de la fonction.
La réponse de Drew est presque parfaite, il manque simplement un support et une virgule pour IE.
function username_not_duplicate(username) { var function_name = "get_username"; var parameters = [username]; var url = "camps/includes/get_functions.php?function_name=" + function_name + "¶meters=" + parameters; var rslt = false; $.ajax({ async: false, url: url, dataType: "json", success: function(data) { if (data == true) { rslt = true; } }, }); return rslt; }
Un autre choix consiste à utiliser une fonction de rappel et à transmettre à la fonction qui exécute Getjson comme: de cette façon, votre fonction de rappel sera appelée à la fin de l'appel Getjson. . p> p>
Vous voulez que la fonction USERNAME_NOT_DUPLILE attendue jusqu'à ce que l'appel Getjson se termine?
besoin de voir get_functions.php. Pendant ce temps, utilisez Firebug pour surveiller ce qui est retourné pour que c'est une booléenne nue, que je doute, ALTHO Vous utilisez le retour comme s'il s'agissait