2010-08-23 28 views
13

Tengo una función de PHP en mi sitio que tarda unos segundos en completarse. Esto contiene toda la página arriba que no quiero.¿Llamar a la función de PHP desde jQuery?

¿Sería posible con jquery llamar a esta función PHP después de que la página se haya cargado y mostrar los resultados en un div? ¿También para mostrar una imagen del cargador ajax hasta que la función PHP se haya completado?

He estado buscando en jQuery.post pero parece que no funciona.

¿Alguien podría ayudar?

Gracias

+1

Es posible el uso de AJAX pero probablemente debería publicar una parte de su código para darnos una mejor idea de exactamente lo que estamos tratando de lograr. –

Respuesta

16

AJAX hace la magia:

$(document).ready(function(

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

)); 
2

Esto es exactamente lo que es para ajax. Ver aquí:

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

Básicamente, Ajax/test.php y poner el código HTML devuelto al elemento que tiene el identificador de resultado.

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

Por supuesto, usted tendrá que poner la funcionalidad que lleva tiempo a un nuevo archivo PHP (o llame a la anterior con un parámetro GET que activará solamente esa funcionalidad).

7

Sí, esto es definitivamente posible. Necesitarás tener la función php en un archivo php separado. He aquí un ejemplo usando $ .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); 

    }); 

Y luego, en el script php, simplemente eco del HTML que desea. Este es un ejemplo sencillo, pero un buen lugar para empezar:

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

¿Qué hacemos si la función php está dentro de un archivo php que también contiene diferentes funciones? – WantIt

9

Gracias todos. Tomé partes de cada una de sus soluciones e hice las mías.

La solución de trabajo final es:

<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> 
Cuestiones relacionadas