如何修改我的页面上的雅虎天气外观?

时间:2013-03-12 08:09:10

标签: php jquery html yahoo-weather-api

我刚刚在我的页面上获得了基本的雅虎天气预报...

以下代码呈现以下图片:

$ipaddress = $_SERVER['REMOTE_ADDR'];

// API username and key masked as sensitive and irrelevant to this question
$locationstr = "http://api.locatorhq.com/?user=MYAPIUSER&key=MYAPIKEY&ip=".$ipaddress."&format=xml";

$xml = simplexml_load_file($locationstr);

$city = $xml->city;

// We'll only be accounting for certain cities to start off with...
switch ($city)
{
    case "Pretoria":
        $loccode = "SFXX0044";

        $weatherfeed = file_get_contents("http://weather.yahooapis.com/forecastrss?p=".$loccode."&u=c");
        if (!$weatherfeed) die("weather check failed, check feed URL");
        $weather = simplexml_load_string($weatherfeed);

        readWeather($loccode);
        break;
}

function readWeather($loccode)
{
    $doc = new DOMDocument();
    $doc->load("http://weather.yahooapis.com/forecastrss?p=".$loccode."&u=c");

    $channel = $doc->getElementsByTagName("channel");

    foreach($channel as $ch)
    {
        $item = $ch->getElementsByTagName("item");

        foreach($item as $rcvd)
        {
            $desc = $rcvd->getElementsByTagName("description");

            // Save the weather data to a session variable for placement on the page
            $_SESSION["weather"] = $desc->item(0)->nodeValue;
        }
    }
}

My Yahoo Weather data

在我看来这看起来非常糟糕,所以我想在这里改变整体设计以适应我网站的其他部分。

我有一个关于用jquery重写渲染的html的想法,但是我没有到达那里。

这是我目前正在呈现的代码:

<div id="weather-feed">
    <img src="http://l.yimg.com/a/i/us/we/52/34.gif"/>
    <b>Current Conditions:</b>
    Partly Cloudy, 17 C
    <b>Forecast:</b>
    Tue - PM Thunderstorms. High: 26 Low: 16
    Wed - Mostly Sunny. High: 27 Low: 16

    <a href="http://us.rd.yahoo.com/dailynews/rss/weather/Pretoria__SF/*http://weather.yahoo.com/forecast/SFXX0044_c.html">Full Forecast at Yahoo! Weather</a>
    (provided by <a href="http://www.weather.com" >The Weather Channel</a>)
</div>

基本上,我想要做的就是修改这个渲染的代码,如下所示:

<div id="weather-feed">
    <div class="weather-icon">
        <img src="http://l.yimg.com/a/i/us/we/52/34.gif"/>
    </div>
    <div class="conditions">
        Partly Cloudy, 17 C
    </div>
    <div class="forecast">
        <b>Forecast:</b>
        Tue - PM Thunderstorms. High: 26 Low: 16
        Wed - Mostly Sunny. High: 27 Low: 16

        <a href="http://us.rd.yahoo.com/dailynews/rss/weather/Pretoria__SF/*http://weather.yahoo.com/forecast/SFXX0044_c.html">Full Forecast at Yahoo! Weather</a></div>
    <div class="credit">
        provided by <a href="http://www.weather.com" >The Weather Channel</a>
    </div>
</div>

我没有找到任何可以指导我如何做到这一点的运气。

我可以利用任何api调用来获取我所请求数据的不同表示吗?

如果没有,有人可以建议我如何成功重写此代码吗?也许用一个小例子......

1 个答案:

答案 0 :(得分:0)

获取你得到的结果html chunk,然后使用jquery来修改它的垃圾。幸运的是,主要的div有一个很好的身份。您应该能够从主html块中获取单个块,例如

<img ..../>,并将其转储到第二个html块中,在其中添加附加了类的<div>。像alert($('div#weather-feed').html())这样的东西,例如这将打印整个块。向前跳过:alert($('div#weather-feed img').attr("src"))将获得img的src。到处玩,使用html并重建它。

接下来:假设你知道或者可以弄清楚jquery是如何工作的以及document.ready()是什么。 Jquery将成为你的朋友。我发布了一个例子。看这个。它已经暗示了它。 How to mess with some html