2010-07-15 5 views
0

J'ai la fonction suivante:Mon Javascript (et Mootools) fonction ne retourne pas vrai ou faux

function validateField(query) { 
    new Request.JSON({ 
     onRequest : function() { 

     }, 
     onSuccess : function(json){ 
      return true; 
     },  
     data : query + '&validate=true', 
     url : base + 'ninjquiry.php' 
    }).send();    
} 

Maintenant onSuccess tire certainement parce que je peux mettre un console.log là-dedans et il fonctionne, si Je fais ce qui suit ailleurs:

console.log(validateField(query)); 

Je reçois "non défini". Pourquoi est-ce ?

Merci pour toute aide à l'avance

  • Alex

Répondre

1

Ajax est asynchrone. Le rappel onSuccess est appelé ultérieurement, une fois la fonction validateField terminée. Le return true va disparaître dans les airs.

Vous devez soit rendre votre appel synchrone - je suis sûr que MooTools a un paramètre pour cela - mais cela est fortement déconseillé, car il peut geler le navigateur.

Ou, c'est la meilleure alternative, changez votre code afin que tout ce qui est pertinent se passe dans le rappel onSuccess.

+0

Je devais effectuer certaines actions sur un élément mais je suppose que vous avez raison et que je peux passer cet élément en argument. Merci pour la réponse. – beingalex

+0

@beingalex vous êtes les bienvenus. Le passage de l'élément ne devrait pas poser de problème, une variable que vous utilisez dans (ou passez à) la fonction 'validateField' sera automatiquement disponible dans le rappel' onSuccess'. –

Questions connexes