2010-08-23 2 views
13

У меня есть функция PHP на моем сайте, которая занимает пару секунд. Это держит всю страницу, которой я не хочу.Вызов функции PHP из jQuery?

Возможно ли с помощью jquery вызвать эту функцию PHP после загрузки страницы и отображения результатов в div? Также для отображения изображения загрузчика ajax до завершения функции PHP?

Я смотрю на jQuery.post, но не могу заставить его работать.

Помогло ли кто-нибудь?

Спасибо

+1

Это возможно с помощью AJAX, но вы, вероятно, должны опубликовать некоторые кода, чтобы дать нам лучшее представление о том, что именно вы пытаетесь достичь. –

ответ

16

AJAX делает волшебство:

$(document).ready(function(

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

)); 
2

Это именно то, для чего нужен аякс. Смотрите здесь:

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

В принципе, вы АЯКС/test.php и положить возвращаемый HTML код элемента, который имеет идентификатор результата.

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

Конечно, вам нужно будет поставить функциональность, которая занимает много времени, чтобы новый файл PHP (или вызовите старый с параметром GET, который будет активировать эту функциональность только).

7

Да, это определенно возможно. Вам нужно иметь функцию php в отдельном php-файле. Вот пример использования $ .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); 

    }); 

И затем, в вашем PHP скрипт, просто эхо HTML вы хотите. Это простой пример, но хорошее место, чтобы начать:

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

Что мы будем делать, если php-функция находится внутри файла php, который также содержит разные функции? – WantIt

9

Спасибо всем. Я взял бит каждого из ваших решений и сделал свой собственный.

Окончательный рабочий раствор:

<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> 
Смежные вопросы