我正在开发一个网络应用程序。在这里,我用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不允许。
这是什么意思?
答案 0 :(得分:1)
您无法使用javascript进行跨域ajax请求。
答案 1 :(得分:1)
我知道我迟到了,但是在构建天气页面时遇到了同样的问题。 我使用了谷歌的API,但你应该能够很容易地为雅虎的API重写这个:
在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;博士:您可以通过PHP抓取XML文件然后将XMLHttpRequest发送到本地PHP文件来绕过跨域AJAX块。 ;)