2010-07-24 6 views
1

J'ai une fonction JavaScript dans laquelle j'utilise jQuery .post, et je voulais retourner un booléen dans le fallback:jQuery Ajax retour fallback

function is_available() { 
    $.post('ajax', { 
     action: 'mail' 
    }, function(data) { 
     if ($.trim(data) == 'NO_ERROR') { 
      return true; 
     } else { 
      return false; 
     } 
    }); 
} 

mais la fonction retourne undefinied. Comment pourrais-je retourner ce booléen?

Répondre

1

Depuis ces return déclarations que vous avez actuellement ne fonctionnent pas plus tard, vous avez besoin d'appeler un code qui repose sur les données du rappel, par exemple:

function check_available() { 
    $.post('ajax', { 
    action: 'mail' 
    }, function(data) { 
    myNextFunction($.trim(data) == 'NO_ERROR'); 
    }); 
} 
function myNextFunction(isAvailable) { 
    //do something, this runs after the AJAX request completes the check 
} 

Ainsi, au lieu de traiter est synchronosuly avec une instruction return, traiter le chemin du code comme asynchrone, et lancer n'importe quel code ayant besoin de la valeur "disponible" du callback $.post(), il s'exécutera lorsque la requête du serveur reviendra et que le booléen dont vous avez besoin est prêt à l'emploi.

Actuellement, il renvoie undefined car cette fonction de rappel se produit plus tard (après que votre code actuel a essayé d'utiliser la valeur).