Вызывать функцию PHP из jQuery? - PullRequest
15 голосов
/ 23 августа 2010

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

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

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

Может ли кто-нибудь помочь?

Спасибо

Ответы [ 4 ]

18 голосов
/ 23 августа 2010

AJAX творит чудеса:

$(document).ready(function(

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

));
10 голосов
/ 25 августа 2010

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

Окончательное рабочее решение:

<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>
9 голосов
/ 23 августа 2010

Да, это определенно возможно. Вам нужно будет иметь функцию 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>';
?>
3 голосов
/ 23 августа 2010

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

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

По сути, вы ajax / test.php и помещаете возвращенный HTML-код в элемент, который имеет идентификатор результата.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...