2010-02-19 5 views
0

Je peux seulement obtenir les fonctions getRating(); et getRatingText(); pour mettre à jour sans recharger la page Web. Mais les autres fonctions getRatingText2(); et getRatingAvg(); ne seront pas mises à jour jusqu'à ce que je recharge la page Web.JQuery Problème de mise à jour?

Comment puis-je mettre à jour toutes les fonctions sans recharger ma page Web?

Voici le script JQuery.

$(document).ready(function() { 

    if($("#rating-text").length) { 

     getRatingText(); 

     getRatingText2(); 

     getRatingAvg(); 

     getRating(); 
    } 


    function getRatingText(){ 
     $.ajax({ 
      type: "GET", 
      url: "update.php", 
      data: "do=getavgrate", 
      cache: false, 
      async: false, 
      success: function(result) { 
       // add rating text 
       $("#rating-text").text(result); 
      }, 
      error: function(result) { 
       alert("some error occured, please try again later"); 
      } 
     }); 
    } 



     function getRatingText2(){ 
      $.ajax({ 
       type: "GET", 
       url: "update.php", 
       data: "do=getavgrate2", 
       cache: false, 
       async: false, 
       success: function(result) { 

        $("#rating-text2").text(result); 
       }, 
       error: function(result) { 
        alert("some error occured, please try again later"); 
       } 
      }); 
     } 



     function getRatingAvg(){ 
      $.ajax({ 
       type: "GET", 
       url: "update.php", 
       data: "do=getavgrate3", 
       cache: false, 
       async: false, 
       success: function(result) { 

        $("#grade-avg").text(result); 
       }, 
       error: function(result) { 
        alert("some error occured, please try again later"); 
       } 
      }); 
     } 


    function getRating(){ 
     $.ajax({ 
      type: "GET", 
      url: "update.php", 
      data: "do=getrate", 
      cache: false, 
      async: false, 
      success: function(result) { 

       $("#current-rating").css({ width: "" + result + "%" }); 

       $("#rating-text").text(getRatingText()); 
      }, 
      error: function(result) { 
       alert("some error occured, please try again later"); 
      } 
     }); 
    } 


    // link handler 
    $('#ratelinks li a').click(function(){ 
     $.ajax({ 
      type: "GET", 
      url: "update.php", 
      data: "rating="+$(this).text()+"&do=rate", 
      cache: false, 
      async: false, 
      success: function(result) { 

       $("#ratelinks").remove(); 

       getRating(); 
      }, 
      error: function(result) { 
       alert("some error occured, please try again later"); 
      } 
     }); 

    }); 
}); 

Répondre

0

La fonction $ (document) .ready n'est appelée que lorsque la page est chargée et que dom est prêt. getRatingText2() et getRatingAvg() sont uniquement appelés dans cette fonction, c'est pourquoi ils ne sont appelés que lorsque la page est chargée.

Peut-être devraient-ils être appelés dans l'événement click avec vos autres fonctions ou avec getRating()? (getRating(); et getRatingText();)

+0

Où vais-je mettre cela dans mon code? Je suis assez nouveau pour JQuery. – pnut

+0

Si vous voulez que getRatingText2() et getRatingAvg() se mettent à jour quand ils cliquent sur le lien de taux, placez-les simplement dans votre $ ('# ratelinks li a'). –

+0

ne peut toujours pas le faire fonctionner. – pnut

0

Vos éléments "clic" sont-ils générés dynamiquement? Si c'est le cas, utilisez
$('#ratelinks li a').live('click', funcion())

+0

cela ne fonctionnait pas non plus :( – pnut

+0

vous semblez que vous avez plus de problèmes jQuery Êtes-vous sûr que CSS est correct Avez-vous essayé d'appliquer la fonction 'live' ou' click' pour JUSTE un identifiant de lien spécifique? – Sebastian