jQuery retour ajax résultat en dehors de la variable
J'ai un problème à l'aide d'ajax.
Comment puis-je attribuer tous les résultats de l'ajax en dehors de la variable ?
Je google et trouvé ce code..
var return_first = (function () {
var tmp = null;
$.ajax({
'async': false,
'type': "POST",
'global': false,
'dataType': 'html',
'url': "ajax.php?first",
'data': { 'request': "", 'target': arrange_url, 'method': method_target },
'success': function (data) {
tmp = data;
}
});
return tmp;
});
mais ne fonctionne pas pour moi..
Quelqu'un peut-il dire ce qui est mal à propos que le code ?
- "pas de travail pour moi" - je n'ai pas ma boule de cristal avec moi à comprendre ce que cela signifie. Comment utilisez-vous
return_first
variable? - il va faire une demande en "ajax.le php?premier" post de données, si les données sont correctes, puis affiche "OK", si elle n'est pas alors "PAS OK", et je veux que ceux chaîne de résultat à affecter à return_first variable..
- L'appel est asynchrone,
tmp
ne remplira jamais parce qu'elle exécutera immédiatement, vous devez utiliserdeferred
oupromise
objets ici. - il a
'async': false
dansajax
options.
Vous devez vous connecter pour publier un commentaire.
Il vous manque une virgule après
Aussi, si vous voulez
return_first
pour contenir le résultat de votre fonction anonyme, vous avez besoin de faire un appel de fonction:Note
()
à la fin.async
a été déprécié?C'est tout ce que vous devez faire:
À l'aide de "asynchrone": false pour prévenir le code asynchrone est une mauvaise pratique,
Sur la surface de réglage asynchrone pour les fausses solutions à beaucoup de questions parce que, comme les autres réponses montrent, que vous obtenez vos données dans une variable. Toutefois, en attendant que les données posté pour le retour (qui dans certains cas peut prendre quelques secondes à cause d'appels de base de données, les connexions lentes, etc.) le reste de votre Javascript fonctionnalités (comme les événements déclenchés, Javascript traitées boutons, JQuery les transitions (comme un accordéon, ou la saisie semi-automatique (JQuery UI)) ne sera pas en mesure de se produire alors que la réponse est en attente (ce qui est vraiment mauvais, si la réponse ne revient jamais que votre site est maintenant pratiquement gelé).
Essayez plutôt ceci,
'async': false
dit que c'est amorti. J'ai remarqué que si je lanceconsole.log('test1');
sur ajax succès, alorsconsole.log('test2');
normal js après l'ajax fonction,test2
impressions avanttest1
donc, la question est un appel ajax a un peu de retard, mais cela n'arrête pas le reste de la fonction pour obtenir des résultats. La variable n'est tout simplement pas ensemble "encore", si vous avez besoin de retarder la fonction suivante.sur test.php (au cas où vous avez besoin pour tester cette fonction)