2011-10-09 5 views
1

J'ai une fonction pour valider un code avec AJAX (PHP). Toutefois, lorsque j'essaie de l'exécuter, il renvoie undefined lorsqu'il doit renvoyer true ou false.ajax function return undefined

fonction

:

function verifyViite(viite) { 
    $.get('dataminer.php?question=validateViite&q='+viite, function(data) { 
     jQuery.globalEval(data); 
     if(valid == 1) { 
      return true; 
     } 
     else { 
      return false; 
     } 
    }); 
} 

Le data est soit valid = 1; ou valid = 0;

Répondre

2

Vous ne pouvez pas retourner la valeur de retour de rappel en raison de la requête AJAX étant asynchrone.

Exécute n'importe quel code appelant verifyViite à l'intérieur du rappel lui-même, au lieu de retourner vrai ou faux. En outre, vous pouvez avoir synchronous AJAX request.

+0

Je suis désolé si j'ai mal compris, mais dites-vous que je ne peux pas faire cette validation grâce à une fonction? –

+0

Vous pouvez faire cette validation via une fonction, mais vous avez plutôt besoin de fournir un rappel (comme je l'ai posté dans mon autre post ..) – japrescott

+0

Vous ne pouvez pas le faire de la façon dont vous essayez maintenant - vous devrez change ta logique. Post plus de code et nous pourrions être en mesure de vous donner une meilleure logique. –

2

puisque la fonction veryViite ne renvoie rien, undefined est le résultat attendu. Depuis son asynchronouse, vous devrez donner une fonction de rappel qui serait appelée sur un appel ajax réussi. Quelque chose comme ça;

function verifyViite(viite,cb) { 
    $.get('dataminer.php?question=validateViite&q='+viite, function(data) { 
     jQuery.globalEval(data); 
     if(valid == 1) { 
      cb(true); 
     } 
     else { 
      cb(false); 
     } 
    }); 
} 

et l'appel serait comme;

verifyViite(viite,function(good){ 
    alert(good); 
}); 
+0

Ok donc 'cb' est une fonction ici? –

+0

Pourriez-vous m'expliquer cette chose "callback"? –

+0

Oui. Comme vous le voyez d'après ce que j'appelle verifyViite, je fournis une fonction qui sera appelée quand l'ajax reviendra. Ainsi, la fonction fournie est la variable cb dans verifyViite. Cette fonction aurait plus de sens si elle comptait les erreurs et peut-être marquer un document comme "non chargeable". À la fin de vos appels, vous pouvez alors savoir ce qu'il faut faire avec les appels erronés .. Btw -> en utilisant Eval est "mauvaise" pratique! JQuery fera tout le "eval" nécessaire pour que vous accédiez à l'information. – japrescott