2010-08-23 5 views
13

J'ai une fonction PHP sur mon site qui prend quelques secondes à compléter. Cela tient toute la page que je ne veux pas.Appelez la fonction PHP de jQuery?

Serait-il possible avec jquery d'appeler cette fonction PHP après le chargement de la page et d'afficher les résultats dans un div? Aussi pour afficher une image de loader ajax jusqu'à ce que la fonction PHP soit terminée?

J'ai regardé jQuery.post mais n'arrive pas à le faire fonctionner.

Est-ce que quelqu'un pourrait vous aider?

Merci

+1

Il est possible en utilisant AJAX, mais vous devriez probablement poster une partie de votre code pour nous donner une meilleure idée de ce que vous essayez d'atteindre. –

Répondre

16

AJAX fait la magie:

$(document).ready(function(

    $.ajax({ url: 'script.php?argument=value&foo=bar' }); 

)); 
2

C'est exactement ce que ajax est pour. Voir ici:

http://api.jquery.com/load/

Fondamentalement, vous ajax/test.php et placez le code HTML retourné à l'élément qui a l'identifiant de résultat.

$('#result').load('ajax/test.php'); 

Bien sûr, vous aurez besoin de mettre la fonctionnalité qui prend du temps à un nouveau fichier php (ou appelez l'ancien avec un paramètre GET qui active cette fonctionnalité uniquement).

7

Oui, c'est certainement possible. Vous devrez avoir la fonction php dans un fichier php séparé. Voici un exemple en utilisant .post $:

$.post( 
    'yourphpscript.php', // location of your php script 
    { name: "bob", user_id: 1234 }, // any data you want to send to the script 
    function(data){ // a function to deal with the returned information 

     $('body ').append(data); 

    }); 

Et puis, dans votre script php, juste echo le code HTML que vous voulez. Ceci est un exemple simple, mais un bon endroit pour commencer:

<?php 
    echo '<div id="test">Hello, World!</div>'; 
?> 
+2

Que faisons-nous si la fonction PHP est à l'intérieur d'un fichier php qui contient également différentes fonctions? – WantIt

9

Merci à tous. J'ai pris des morceaux de chacune de vos solutions et j'ai fait les miennes.

La solution finale de travail est:

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $.ajax({ 
      url: '<?php bloginfo('template_url'); ?>/functions/twitter.php', 
      data: "tweets=<?php echo $ct_tweets; ?>&account=<?php echo $ct_twitter; ?>", 
      success: function(data) { 
       $('#twitter-loader').remove(); 
       $('#twitter-container').html(data); 
      } 
     }); 
    }); 
</script> 
Questions connexes