Autor Zpráva
peta
Profil
Je mozne nejak z http://api.jquery.com/ stahnout pouze cast tykajici se requestu a parsovani v xml?

Sem si chtel dat do google mapy pocasi a nenasel jsem na googlu zatim zadne api, co to rozparsuje. Samozrejme si to muzu napsat sam, ale radeji dam prednost proverenemu reseni. jquery je fajn, ale prijde mi to jako ne moc vhodne pridat 200k kodu kvuli requestu.
http://www.google.com/ig/api?weather=opava,cz
_es
Profil
Jquery ti v tomto nepomôže, ide o dáta z inej domény, ku ktorým nie je v JS prístup - možno len v niektorých prehliadačoch a ak to má Google správne nastavené. Jedine, že by Google poskytoval aj možnosť cez JSONP.
peta
Profil
No jo, pravda, na to jsem nepomyslel :)
Ok, tak to soupnu pres vlastni php, ale parsovat bych to chtel v js?
_es
Profil
peta:
parsovat bych to chtel v js
Objekt XmlHttpRequest má predsa metódu responseXML, JS knižnice ti na to nie sú treba. Okrem toho by bolo asi lepšie prekonvertovať dáta do JSON, asi je na to v PHP veľa knižníc, do tvaru:
var x = JSONObjekt;
a potom ti žiadne parsovanie v JS netreba.
peta
Profil
http://www.exorithm.com/algorithm/view/weather_forecast
peta
Profil
jen je treba tam doplnit &hl=cs a iconv, protoze to google posila v latin-2 misto utf-8 jako pro hl=en
Witiko
Profil
peta:
To nemá co do činění s javascriptem. Server-side script, který si stáhne XML a ukuchtí z něj html dokument.
peta
Profil
Ted uz to nema nic s js. Puvodni plan byl udelat to v js.
Kdyby nekdo mel zajem, tak ma podoba google pocasi vypada v php takto:
http://webapp.fpf.slu.cz/gmapa/wheather.php
<?php
//http://www.google.com/ig/api?weather=opava,cz
//http://www.exorithm.com/algorithm/view/weather_forecast

function att($att,$type,$row=0)
{
global $xml;
switch ($type)
  {
  case 1 : return $xml->weather->current_conditions->{$att}['data'];
  case 2 : return $xml->weather->forecast_conditions->$row->{$att}['data'];
  default: return $xml->weather->forecast_information->{$att}['data'];
  }
}

function img($url,$width=35,$title)
{
//return '<img src="http://www.google.com/'.$url.'"/>';
$name   = substr($url,strrpos($url,'/')+1,-4);
$images = array(
'cloudy'         => 'cloudy',
'mostly_cloudy'  => 'partly_cloudy',
'chance_of_rain' => 'light_rain',
'chance_of_storm'=> 'tstorms',
'mostly_sunny'   => 'mostly_sunny',
);
$name = isset($images[$name]) ? $images[$name] : $name;
$name = $name.'.png';
$url_folder = $width==60 || $width==35 ? $width : 35;
return '<img src="http://ssl.gstatic.com/onebox/weather/'.$url_folder.'/'.$name.'" alt="'.$name.'" width="'.$width.'" title="'.$title.'">';
}



header('content-type: text/html; charset: utf-8');
$data  = file_get_contents('http://www.google.com/ig/api?weather=opava,cz&hl=cs');
$data  = iconv("iso-8859-2", "UTF-8", $data );
$xml   = simplexml_load_string($data);
$loc   = str_replace(',',', ',att('city',0));
$date  = att('forecast_date',0);
$t     = '&deg;C';
$html  = '
<html>
<head>
<title>Počasí</title>
<style type="text/css">
html, body {margin:0;padding:0;}
.f1, .f2 {border-collapse:collapse; border-spacing:0;}
.f1 caption {font-weight:bold;text-align:left;}
.f1 caption:first-letter {text-transform:uppercase;}
.f2 {color:#666;}
.f1 .temp {font-size:125%;}
.f2 .temp {font-size:85%;}
</style>
</head>
<body>
';

$html .= "
<table class=\"f1\" summary=\"Aktuální počasí pro ".$loc."\">
  <caption>".$loc."</caption>
  <tr>
    <td width=\"35\">".img(att('icon',1),35,att('condition',1))."</td>
    <td><div class=\"temp\">".att('temp_c',1).$t."</div></td>
  </tr>
  <tr>
    <td colspan=\"2\">
      <div class=\"wind\">".preg_replace('/\ss.*?rychlostí/',',',att('wind_condition',1))."</div>
      <div class=\"hum\">" .att('humidity',1)."</div>
    </td>
  </tr>
</table>";

$html .= "
<table class=\"f2\" summary=\"Předpověď počasí\">";
for ($i=0;$i<3;$i++)
  {
  $html .= "
  <tr>
    <td>".img(att('icon',2,$i),16,att('condition',2,$i))."</td>
    <td><div class=\"temp\">".att('high',2,$i).$t.', '.att('low',2,$i).$t."</div></td>
    <td>&nbsp;".att('day_of_week',2,$i)."</td>
  </tr>";
  }
$html .= "
</table>
</body>
</html>
";
echo $html;
?>

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0