2011-08-12 12 views
0

私は私のデジタルディスプレイの天気を得るためにyahoo weather feedとsimplepieを使用しています。画面上で実行されるWebサイトなので、ブラウザを常に手動でリフレッシュすることはできません。yahoo weather/simple pieの画面を定期的に更新するにはどうすればよいですか?

jqueryやphp docなどの天気情報が定期的に更新されるのはどういうことでしょうか?もしそうなら、私はどのように実装するべきかについての指示を私に与えることができますか?あなたの助けが大いに評価されます。ここで

は、それはいくつかのヘッダ部分の情報

<div id="weather"> 
     <div id="title"> 
       <ul> 
        <!--<li> Outside Temp </li>--> 
        <li> Today </li> 
        <li> Tomorrow </li> 

       </ul> 
     </div> <!--title--> 

     <div id="forecast"> 

     <div id="images"> 
      <ul> 
       <?php foreach ($weather->get_forecasts() as $forecast): ?> 

       <li><img src="<?php echo $forecast->get_image(); ?>" alt="Weather" /></li> 

       <?php endforeach; ?> 
      </ul> 
     </div> <!--images--> 

     <div id="degrees"> 
      <ul> 
       <?php foreach ($weather->get_forecasts() as $forecast): ?> 

       <li><?php echo $forecast->get_low(); ?>&deg; &nbsp; <?php echo $forecast->get_high(); ?>&deg; </li> 

       <?php endforeach; ?> 
      </ul> 
      </div><!--degrees--> 

    </div> <!--forecast--> 
<!--</div> <!--second--> 

便利です念のために私のコードの一部です:

<php 

require_once('simplepie/simplepie.inc'); 
require_once('simplepie/simplepie_yahoo_weather.inc'); 

$feed = new SimplePie(); 

$feed->set_feed_url('http://weather.yahooapis.com/forecastrss?w=1234567&u=c'); 

$feed->set_item_class('SimplePie_Item_YWeather'); 

$feed->init(); 

$weather = $feed->get_item(0); 

?> 

ありがとうございました!あなたは既にJavaScriptを、あなたが定期的にページを更新するための本当に簡単な方法は、meta refresh tagを使用するのが良いかもしれない

S :)

+1

setIntervalを使用して、ある時間間隔でajaxリクエストを使用します。 –

答えて

2

を使用していないので。推奨されなくなりましたが、動的なページを手早く取得することができます。単純にページの<head>にタグを追加します。

<meta http-equiv="refresh" content="5"> <!--Refresh the page every 5 seconds--> 

しかし、あなたの代わりにページにコンテンツをロードするために、AJAXを使用して検討する必要があります。これはこれに最善のアプローチではないかもしれませんが、ここには素早く汚れたコードがあります。

メインページでは、jQueryのloadを使用することができ、定期的にあなたのPHPスクリプトのURLをヒットすると、表示のためにdivにコンテンツをロードします。

<html> 
<head> 
    <script type="text/javascript"> 
     $(document).ready(function(){ 
      setTimeout(loadWeather, 5000); //using setTimeout instead of a setInterval to avoid having multiple queries queue up when the first one fails to return within the timeout period 
     }); 

     function loadWeather(){ 
      $('#weather').load('weather.php); 
      setTimeout(loadWeather, 5000); 
     } 
    </script> 
</head> 
<body> 
    <div id="weather" /> 
</body> 
</html> 

weather.phpはこのようになります:

<div id="weather"> 
     <div id="title"> 
       <ul> 
        <!--<li> Outside Temp </li>--> 
        <li> Today </li> 
        <li> Tomorrow </li> 

       </ul> 
     </div> <!--title--> 

     <div id="forecast"> 

     <div id="images"> 
      <ul> 
       <?php foreach ($weather->get_forecasts() as $forecast): ?> 

       <li><img src="<?php echo $forecast->get_image(); ?>" alt="Weather" /></li> 

       <?php endforeach; ?> 
      </ul> 
     </div> <!--images--> 

     <div id="degrees"> 
      <ul> 
       <?php foreach ($weather->get_forecasts() as $forecast): ?> 

       <li><?php echo $forecast->get_low(); ?>&deg; &nbsp; <?php echo $forecast->get_high(); ?>&deg; </li> 

       <?php endforeach; ?> 
      </ul> 
      </div><!--degrees--> 

    </div> <!--forecast--> 
<!--</div> <!--second--> 
+0

こんにちはコーディング、私にいくつかの例/コードを教えてください。私はディスプレイの他の部分のためにjavascriptを使用して、私はいくつかのjqueryの更新を試みたが、それは私のサイトの作業の一部を停止するようだ。どんな助けもありがとうございます。ありがとう、S :) – grumpypanda

+0

@SamIAm可能な(単純な)解決策については、私の更新答えをご覧ください。 –

+0

こんにちはコーディング、ありがとう、本当にありがとうございます。私は私が見つけたものを書いていました、そして、ここで私よりも速いです。私はajaxとjavascriptの方法を見つけました。ここにコードがあります。あなたの提案と同じように動作すると思いますか?どちらの方が良いですか?どうもありがとうございました! S :) – grumpypanda

関連する問題