2012-01-03 5 views
0

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

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

Я сделал это, как здесь: Get weather from Yahoo with 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.

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

ответ

1

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

1

Я знаю, что опаздываю, но я столкнулся с той же проблемой, когда строил погодную страницу. я использовал 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-файл. ;)