2010-08-16 5 views
0

Pourquoi ne puis-je pas affecter ajaxResult au résultat? console.log (résultat); fonctionne correctement qui est à l'intérieur de l'option de succès et apparaît deuxième dans la console. mais résultat du dernier de console.log (résultat); est indéfini et apparaît d'abord dans la console. Quel est le probleme avec ca?jQuery portée variable?

$(function() { 
     var result; 
     $.ajax({ 
      type: 'POST', 
      url: 'GelinlikSet', 
      dataType: 'json', 
      success: function (ajaxResult) { 
       result = ajaxResult; 
       console.log(result); 
      } 
     }); 
     console.log(result); 
    }); 

Répondre

1

Le fichier console.log en dehors de l'appel ajax est en cours d'exécution avant le retour de l'ajax.

Le fichier console.log du succès est là où il devrait être pour enregistrer quelque chose de l'ajax.

+0

quelle est la solution? – beratuslu

+0

il suffit de supprimer le dernier console.log, le résultat ne doit pas être défini ici –

2

result doit être réglé sur ajaxResultaprès les pistes de rappel success.

Le rappel AJAX ne pourra pas revenir tant que le thread en cours n'est pas terminé (c'est-à-dire le thread qui appelle $.ajax et console.log).

Si vous devez effectuer une action avec le résultat, vous devrez le faire à partir du rappel success.

0

Le second console.log est en cours d'exécution immédiatement après l'appel ajax, avant que la fonction de réussite ne soit appelée car elle est asynchrone (c'est-à-dire, A dans Ajax).