Il existe une telle exigence dans le projet, utilisez ajax pour charger des données, renvoyez la page et attribuez une valeur, puis supprimez la valeur sur le front-end
Cela implique l'ordre du code. Parfois, l'arrière-plan n'a pas renvoyé les données, mais le code suivant a été exécuté
.La valeur ne peut donc pas être obtenue
$.ajax({ type: "post", url: "admin/PfmOptionRuleItem.do", success: function(data){ $("#ruleItem").val(data.ruleItem); //① } }); return $("#ruleItem").val(); //②
Si ① n'a pas renvoyé de données de l'arrière-plan, la valeur ne peut pas être obtenue si ② est exécuté à ce moment
La première lettre d'Ajax est la première lettre d'asynchrone, ce qui signifie que toutes les opérations sont parallèles et que l'ordre d'achèvement n'a aucun rapport.
Le paramètre async de $.ajax() est toujours défini sur true, ce qui indique qu'un autre code peut encore être exécuté après le démarrage de la requête.
Si cette option est définie sur false, cela signifie que toutes les requêtes ne sont plus asynchrones, ce qui entraînera également un blocage du navigateur.
Bien que le responsable ne recommande pas de le faire, vous ne pouvez tout simplement pas trop l'utiliser, sinon cela entraînerait une mauvaise expérience utilisateur
Donnez-moi une châtaigne
alert("setp 1"); $.ajax({ url: "admin/PfmOptionRuleItem.do", async: false, success: function(data){ alert("hello ajax"); //① } }); alert("setp 2"); //②
Lorsque asyn est défini sur false, la requête ajax est synchronisée, c'est-à-dire qu'après que le bloc ajax envoie la requête à ce moment-là,
Il attendra en ① et n'exécutera pas ② tant que ① ne sera pas terminé
À l'heure actuelle, l'ordre d'exécution est
série 1
Bonjour Ajax
série 2
Si async est vrai, l'ordre d'exécution est
série 1
série 2
Bonjour Ajax
À propos de la synchronisation asynchrone et de l'asynchronisme ajax dans jQuery décrites dans cet article, je les ai toutes présentées, j'espère que cela sera utile à tout le monde.