-1

さて、前に質問しましたが、まったく新しい問題に遭遇しました。PHPスクリプトサーバー側にPHP配列があります。クライアント側の Ajax スクリプトを作成して、新しいデータの PHP スクリプトを再ポーリングし、ページに表示される統計を更新しようとしています。

私が正しくやっていないと確信しているAjaxは次のとおりです。

setInterval(function(getLatestInfo) 
{  
    $.ajax({
    type: 'POST',
    url: 'script.php',
    data: 'id=data',
    dataType: 'json',
    cache: false,
    success: function(getLatestInfo){
    $.getJSON(script.php, function(getLatestInfo){
    var result_array = JSON.parse(result);
    });
    $('#bit_rate').html(result_array[4]);
    $('#listeners').html(result_array[5]);
    $('#current_song').html(result_array[9]);
                });
            });
            }, 10000);//time in milliseconds  

そして、ここにPHPがあります:

            <?php 
            Function getLatestInfo() {

$SERVER = 'http://chillstep.info:1984'; 
$STATS_FILE = '/status.xsl?mount=/test.mp3'; 
$LASTFM_API= '00000000000000000'; 

$ch = curl_init(); 

curl_setopt($ch,CURLOPT_URL,$SERVER.$STATS_FILE); 

curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 

$output = curl_exec($ch); 

curl_close($ch); 

$dp = array(); 

$search_for = "<td\s[^>]*class=\"streamdata\">(.*)<\/td>"; 
$search_td = array('<td class="streamdata">','</td>'); 

if(preg_match_all("/$search_for/siU",$output,$matches)) { 
   foreach($matches[0] as $match) { 
      $to_push = str_replace($search_td,'',$match); 
      $to_push = trim($to_push); 
      array_push($dp,$to_push); 
   } 
} 

$x = explode(" - ",$dp[9]); 

echo json_encode($dp);
            }
 ?>

つまり、配列である PHP 変数 $dp を更新してプルし、それを解析して、HTML で使用可能な文字列変数を作成するには、この ajax スクリプトが必要です。そして、このプロセスを 10 秒ごとに繰り返します。

4

1 に答える 1

0

このインスタンスでは setInterval を使用しないでください。成功のコールバックで、元の関数を再度呼び出します。また、ajax 呼び出しの成功コールバックで getJSON を呼び出しています。これは呼び出しを複製しています。

例えば

関数 getlatest()
{
  $.ajax({
  //残りの ajax パラメータ
  成功:関数(結果){
    var resultarray = $.parseJSON(結果);
    $('#bit_rate').html(result_array[4]);
    $('#listeners').html(result_array[5]);
    $('#current_song').html(result_array[9]);
    getlatest();
  }
  });
}
于 2012-10-03T20:50:37.050 に答える