2010-08-23 71 views
13

Tôi có một chức năng PHP trên trang web của tôi mất một vài giây để hoàn thành. Điều này giữ toàn bộ trang mà tôi không muốn.Gọi hàm PHP từ jQuery?

Có thể thực hiện với jquery để gọi hàm PHP này sau khi trang đã tải và hiển thị kết quả trong div không? Ngoài ra để hiển thị một hình ảnh bộ tải ajax cho đến khi chức năng PHP đã hoàn thành?

Tôi đã xem jQuery.post nhưng dường như không làm cho nó hoạt động.

Ai đó có thể trợ giúp?

Cảm ơn bạn

+1

Có thể sử dụng AJAX nhưng có lẽ bạn nên đăng một số mã của bạn để cung cấp cho chúng ta một ý tưởng tốt hơn về chính xác những gì bạn đang cố gắng để đạt được. –

Trả lời

16

AJAX thực hiện sự kỳ diệu:

$(document).ready(function(

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

)); 
2

Đây chính xác là những gì ajax dành cho. Xem ở đây:

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

Về cơ bản, bạn AJAX/test.php và đặt mã HTML trở lại các yếu tố trong đó có id kết quả.

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

Tất nhiên, bạn cần phải đặt chức năng cần thời gian vào tệp php mới (hoặc gọi hàm cũ bằng thông số GET chỉ kích hoạt chức năng đó).

7

Vâng, điều này chắc chắn là có thể. Bạn sẽ cần có hàm php trong một tệp php riêng biệt. Dưới đây là ví dụ sử dụng $ .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); 

    }); 

Và sau đó, trong tập lệnh php của bạn, chỉ cần lặp lại html bạn muốn. Đây là một ví dụ đơn giản, nhưng là một nơi tốt để bắt đầu:

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

chúng ta sẽ làm gì nếu hàm php nằm bên trong một tệp php chứa các hàm khác nhau? – WantIt

9

Cảm ơn tất cả. Tôi đã lấy từng phần của từng giải pháp của bạn và tạo ra các giải pháp của riêng tôi.

Các giải pháp làm việc cuối cùng là:

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