2010-04-19 6 views
3

essentiellement je veux maintenir un paramètre récupérer la valeur de $ .post() appeler comme ceci:

init = function(){   
var lastpage = getLastPage(); 
} 

     function getLastPage(){ 
      $.post("getInfo.php",{ 
       last: "yes" 
      }, 
      function(data){ 
       setLast(data.last); 
      },'json'); 

      return function setLast(data){ 
       return data; 
      } 
     } 

donc quand portée au dernier message (dernier page) je devrais vérifier avec la variable lastpage qui a une valeur retournée par la fonction getLastPage().

Je suis assez flou avec le pointeur javascript et tout. S'il vous plaît aider les gars.

mise à jour (20/4/2010):

Je l'ai fait dans l'autre sens, comme ceci:

init = function(){    
    getLastPage(); 
    if((page+1) == $("#lastpage").val()){ 
    alert("this is last post"); 
    }else{ 
    page++; 
    //get info and display to the page here 
    } 
} 
    function getLastPage(){ 
     $.post("getInfo.php",{ 
      last: "yes" 
     }, 
     function(data){ 
      $("#lastpage").val(data.last); 
     },'json'); 
    } 

première exécution de la fonction pour stocker temporairement la valeur dans la balise d'entrée cachée (lastpage), puis récupérer la valeur à nouveau pour le vérifier à chaque fois que je clique sur le bouton Suivant.

si vous avez tous un moyen plus approprié s'il vous plaît dites-moi.

Répondre

3

Vous devez changer votre code comme celui-ci autour de:

$.post("getInfo.php",{ last: "yes" }, 
    function(data){ 
    functionToRunAfterYouHaveDataSometimeLater(data.last); 
    } 
,'json'); 

Le problème avec votre approche globale est que avec AJAX, vous avez affaire à une opération asynchrone. Cela signifie que la partie function(data) { } ne fonctionne pas alors, elle exécute plus tard, donc votre return ne retourne rien, ce sera undefined. Au lieu de cette approche, vous devez appeler $.post() puis appeler n'importe quelle fonction qui s'appuie sur ces données pour continuer dans le cadre du rappel de $.post(). Après avoir fait que votre commande de code ressemble à ceci:

  • $.post() exécute, tir hors d'une requête au serveur
  • Le reste de votre code après $.post() runs
  • plus tard lorsque la réponse provient du serveur et vous avez des données, votre rappel exécute
  • maintenant continuer à faire ce que vous avez besoin avec ces données
+0

Merci pour votre copain de réponse rapide – Nazmin

+0

je l'ai compris ... merci encore pour votre réponse ... – Nazmin