位置感知和天气网站.Javascript和跨站点XML的问题
Location aware and weather website. Problems with Javascript and cross site XML
试图制作一个页面,通过Javascript向用户显示当前天气。因此,我有一些代码可以找到用户位置,并正确创建一个URL,该URL将完全符合Google天气API的惯例,但问题是发出xml请求并将天气数据返回给用户,这证明是一个问题。我已经为apache安装了mod_rewrite来解决跨站点xml问题,但它似乎无法正常工作。其他人知道我该怎么做吗?这是我迄今为止的代码:
<html>
<head>
<meta name="robots" value="none" />
<title></title>
</head>
<body>
<div id="yourinfo">
</div>
<b>url:</b> <span id="url"></span><br />
<b>city:</b> <span id="city"></span><br />
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
if(google.loader.ClientLocation)
{
visitor_lat = google.loader.ClientLocation.latitude;
visitor_lon = google.loader.ClientLocation.longitude;
visitor_city = google.loader.ClientLocation.address.city;
visitor_region = google.loader.ClientLocation.address.region;
visitor_country = google.loader.ClientLocation.address.country;
visitor_countrycode = google.loader.ClientLocation.address.country_code;
weather_http = 'http://www.google.com/ig/api?weather=' + visitor_city + '+' + visitor_region;
var Result = weather_http;
}
else
{
document.getElementById('yourinfo').innerHTML = '<p>Whoops!</p>';
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET",'weather_http',false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
document.getElementById("url").innerHTML=weather_http
document.getElementById("city").innerHTML=xmlDoc.getElementsByTagName("city")[0].childNodes[0].nodeValue;
</script>
Wikipedia有一个关于如何设置有效XMLHttpRequest的好例子。
基本上,您需要为您的请求设置一个onreadystatechange侦听器,然后打开通过URL(即:weather_http,而不是代码中的"weather_http")的连接,最后发送所有数据。
因为XHR请求是异步的,所以必须实现回调,以便javascript引擎知道XHR响应时该做什么。
当你让XHR工作时,你会发现没有代理你就无法完成你想要做的事情。这是因为XHR的跨域策略。您无法通过XHR从与应用程序当前域不同的域获取数据。
为了克服这一点,您需要实现一个服务器代理来将XHR提交到另一个域,检索响应并将其返回给您的应用程序。有大量的代理免费提供,只需在谷歌上搜索即可。
最后,你会遇到最后一个问题,那就是告诉你的代理追加?weather=城市到目标URL。
祝你好运!
相关文章:
- 我应该如何从xml文件构建一个javascript页面
- 将XML转换为普通的旧JavaScript对象
- jQuery AJAX write to XML
- JavaScript滚动脚本-在测试中激发,而不是在开发站点上
- 如何将childNodes用于XML文档
- 通过iframe登录到远程站点
- 在javascript中的xml中创建一个链接
- JSON到XML的转换
- SVG xml to image
- 将xml站点地图转换为可用链接的JavaScript
- 运行查询并从外部站点检索 XML
- 如何在angularjs应用程序中添加站点地图.xml
- 位置感知和天气网站.Javascript和跨站点XML的问题
- 使用jquery获取跨站点XML响应
- 如何从DC Metro站点获取信息以创建XML文件
- 从Confluence XML或HTML生成可搜索的可移植静态HTML站点
- 如何使用XML从站点生成HTML
- 是否有可能使用Javascript获取XML元素的内容来填充站点内容?
- 从外部站点下载XML
- 剖析站点以克隆AJAX请求并获取XML