Какой самый простой способ создать прогноз погоды? - PullRequest
0 голосов
/ 03 января 2012

Я занимаюсь разработкой веб-приложения. Здесь я создал всплывающее окно в JavaScript. Теперь мне нравится создавать внутри этого окна прогноз погоды.

Какой самый простой способ сделать это?

Я сделал это так: Получить погоду от Yahoo с помощью jQuery

$(".popup-button").click(function(evt){
//prevent default link behavior
    evt.preventDefault();

//get id from clicked element
var id = $(this).attr("id");

switch (id) {
    case "popup-button-wetter":
        //centering with css
        centerPopup($("#popup-wrapper-wetter"));
        //load popup  
        loadPopupadditional($("#popup-wrapper-wetter"));
        //get weather
        getWeather ()
        break;
          ......


function getWeather () {
     $.get("http://weather.yahooapis.com/forecastrss?w=782458&u=c", function(data){
                   console.log("Data Loaded: " + data);
                 });
            }
    });

но потом я получил эту ошибку:

XMLHttpRequest не может загрузить http://weather.yahooapis.com/forecastrss?w=782458&u=c. Исходный файл: // не разрешен Access-Control-Allow-Origin.

Что это значит?

Ответы [ 2 ]

1 голос
/ 24 января 2012

Я знаю, что опоздал, но столкнулся с той же проблемой, когда создавал страницу погоды.Я использовал API Google, но вы можете довольно легко переписать его для API Yahoo:

Сделайте что-то подобное в файле PHP:

<?php
$lat = explode(".", $_GET["lat"] * 1000000); //latitude returned by JS geolocation
$lon = explode(".", $_GET["lon"] * 1000000); //longitude returned by JS geolocation
$api = simplexml_load_string(utf8_encode(file_get_contents("http://www.google.com/ig/api?weather=,,," . $lat[0] . "," . $lon[0] . "&zoom=10&hl=de")));
echo $api->weather->current_conditions->temp_c->attributes()->data; //prints the current temperature in °C
?>

Затем установите кодировку вашего HTMLстраницы в UTF-8, вставив

<meta charset="utf-8">

в тег <head> для правильного отображения умлаутов, таких как ä, ö и ü.

Tl; dr: Вы можете обойти крестблокировать домен AJAX, захватывая XML-файл через PHP и затем отправляя XMLHttpRequest в ваш локальный PHP-файл.;)

1 голос
/ 03 января 2012

Вы не можете выполнять междоменные запросы ajax с javascript.

...