Est-il possible de définir async: false
lors de l'appel de $.getJSON()
sorte que l'appel bloque plutôt que d'être asynchrone?
105
Est-il possible de définir async: false
lors de l'appel de $.getJSON()
sorte que l'appel bloque plutôt que d'être asynchrone?
Réponses:
Vous devez effectuer l'appel en l'utilisant
$.ajax()
de manière synchrone, comme ceci:Cela correspondrait à l'utilisation actuelle
$.getJSON()
comme ceci:la source
type: 'POST'
option pour en faire un article - bien que vous ne souhaitiez pas l'utiliser àasync: false
moins que vous n'en ayez vraiment besoin - cela bloquera l'interface utilisateur.Les deux réponses sont fausses. Vous pouvez. Vous devez appeler
avant votre appel json ajax. Et vous pouvez le définir sur true après la relance de l'appel (s'il y a d'autres utilisations d'ajax sur la page si vous les voulez asynchrones)
la source
$.ajax
(et emballages sténographiques ultérieurs à savoir$.getJSON
,$.get
etc.) pour être synchrone. De plus, la documentation suggère même de ne pas utiliser ceci: "Description: Définissez les valeurs par défaut pour les futures requêtes Ajax. Son utilisation n'est pas recommandée."Je pense que vous avez tous les deux raison. La dernière réponse fonctionne bien, mais c'est comme définir une option globale, vous devez donc faire ce qui suit:
la source
Dans mon cas, Jay D a raison. Je dois ajouter ceci avant l'appel.
Dans mon code précédent, j'ai ceci:
Cela fonctionne trouver. Puis je change pour
L'alerte n'est pas définie.
Si j'ajoute ces trois lignes, l'alerte affiche à nouveau les données.
la source
Si vous avez juste besoin
await
d'éviter l'imbrication du code:la source
Je ne pense pas que vous puissiez définir cette option ici. Vous devrez utiliser jQuery.ajax () avec les paramètres appropriés (en gros, getJSON encapsule simplement cet appel dans une API plus simple).
la source
Roulez votre propre par exemple
la source