0

我的网站目前必须加载 6 个不同的 PHP 页面来填充 7 个 DIV 的信息。

有些每 5 秒刷新一次,有些每秒刷新一次。

我宁愿每秒加载一个 PHP 页面,并将详细信息拆分到所有 DIV 中。这样每秒只发送 1 个请求,而不是 3 或 4 个请求。

所以 --> api/getdata.php 将回显:“$5.93, $10.36, 27:31 1, 22, Joe”。然后 JQuery 将需要将每个逗号拆分为不同的 DIV。像这样的东西:

setInterval(function() {$('#balance, #pot, #timer, #round, #id, #username').load('api/getdata.php');}, 1000);

我在谷歌上看了一下,但找不到任何我要找的东西。

我目前的方法(非常糟糕)是:

<script type="text/javascript">
        $(document).ready(function() {
            $.ajaxSetup({ cache: false }); // This part addresses an IE bug. without it, IE will only load the first number and will never refresh
            $('#GetBalance, #GetBalanceWithdraw').load('get/GetBalance.php');
            $('#Clock').load('get/Clock.php');
            $('#GetPot').load('get/GetPot.php');

            setTimeout(function() {$('#errmsg').fadeOut('slow');}, 5000);
            setInterval(function() {
            $('#GetPot').load('get/GetPot.php');
            $('#TotalBids').load('get/TotalBids.php');
            }, 2500); 
            setInterval(function() {$('#GetBalance, #GetBalanceWithdraw').load('get/Balance.php');}, 5000);
            setInterval(function() {$('#GetBalance').load('get/Balance.php');}, 5000);
            setInterval(function() {$('#Clock').load('get/Clock.php');}, 1000);
        });
    </script>
4

2 回答 2

1

因此,您需要拆分您的响应,然后才分配给元素。此时,您为所有元素添加相同的值。

你需要这样的东西:

setInterval(function() {
    $.get( 'api/getdata.php', function( data ) {
        var result = data.split( ', ' );
        $( '#balance' ).text( result[ 0 ] );
        $( '#pot' ).text( result[ 1 ] );
        $( '#timer' ).text( result[ 2 ] );
        $( '#round' ).text( result[ 3 ] );
        $( '#id' ).text( result[ 4 ] );
        $( '#username' ).text( result[ 5 ] );
    } );
}, 1000);

但是在这种情况下,如果后端响应速度变慢,您可以向服务器发送请求,因此最好在使用递归函数加载之前的 1 秒后调用新的 AJAX:

function updateData() {
    $.get( 'api/getdata.php', function( data ) {
        var result = data.split( ', ' );
        $( '#balance' ).text( result[ 0 ] );
        $( '#pot' ).text( result[ 1 ] );
        $( '#timer' ).text( result[ 2 ] );
        $( '#round' ).text( result[ 3 ] );
        $( '#id' ).text( result[ 4 ] );
        $( '#username' ).text( result[ 5 ] );
        setTimeout( updateData, 1000);
    } );
}
updateData();
于 2013-10-30T14:13:42.073 回答
0

如果您将所有字符串放在一个字符串中并用逗号分隔,您可以这样做:

$( "#result" ).load( "ajax/test.html", function(data) {
  spread_the_news(data);
});

接着

function spread_the_news(data)
{
  var res = data.split(",");
  update_div_0_with_data(res[0]);
  update_div_1_with_data(res[1]);
  ...
}
于 2013-10-30T14:17:15.613 回答