2010-12-05 22 views
0

Hé les gars, je construis une application qui nécessite l'accès au temps serveur avant d'envoyer des requêtes AJAX, la seule façon de le faire est de pouvoir avoir une fonction qui demande le temps du serveur en utilisant AJAX, donc dans ma fonction je le code suivant:Impossible d'obtenir le retour de la fonction AJAX Success de jQuery

$.ajax({ 
    type:"GET", 
    url:"app/time.php", 
     success: function(html){ return html; } }); 

en soi, le code est bien, mais comme il est, je suis incapable d'avoir accès au code HTML retourné, ce qui signifie la les données me sont inutiles. J'ai essayé d'envoyer les données à une autre fonction, et même de revenir sur la même fonction, et cela ajoute simplement une complexité que je ne pense pas nécessaire. J'ai également essayé de placer la valeur du HTML dans une autre variable et de l'utiliser, mais cela ne fonctionne pas en dehors de la fonction.

Donc, je demande s'il existe un moyen facile d'accéder à la variable "html" retournée à partir de la requête AJAX afin que je puisse définir des variables sur la page égale à la fonction?

Répondre

1

le faire comme ceci:

function getTime() { 

     $.ajax({ 
     type:"GET", 
     url:"app/time.php", 
      success: function(html){ setTime(html); } }); 
    } 

    function setTime(time){ 
    //do what ever you want with time 
    } 

chaque fois que vous appelez le temps getTime() un ajax appelé sera faite et la fonction setTime() sera appelée, et obtiendrez temps à travers son argument.

ou vous pouvez le faire comme ça

fonction getTime() {

$.ajax({ 
    type:"GET", 
    url:"app/time.php", 
     success: function(time){ // do what ever with time ; } }); 
} 

Je pense que cette façon est plus facile, mais si vous avez une fonction longue alors le précédent est plus propre que je pense.

+0

Gardez cela à l'esprit que vous devez travailler avec la variable 'time' NOT' html' dans la fonction !!! –

+0

Merci pour la réponse rapide, mais j'ai besoin que l'heure du serveur soit rafraîchie chaque fois que la fonction est appelée. –

+0

@ Tom Walters, votre accueil, j'ai éditer la réponse vérifier! –

0

Vous ne pouvez pas renvoyer de valeur à partir de là. C'est une fonction asynchrone qui est déclenchée lorsque la requête XHR s'est terminée avec succès. Vous avez besoin d'invoquer un autre rappel ici:

function getTime(cb) { 
     .ajax({ 
     type:"GET", 
     url:"app/time.php", 
     success: function(html){ cb(html); } 
     }); 
} 

getTime(function(html) { 
    // do something with html 
}); 
+0

Je me demande pourquoi vous appelez la fonction 'cb()' avec des données pendant que vous avez la fonction 'getTime();' là-bas, je veux dire où obtenez-vous html dans 'getTime()'? pendant que vous appelez 'cb();' –

+0

Merci Andy, mais quand j'utilise la fonction, je veux être en mesure de définir l'heure du serveur à une variable, et dans ce cas, je ne pouvais pas le faire fonctionner. –