国家气象局 JavaScript jquery ajax 0 错误
National Weather Service javascript jquery ajax 0 error
由于某种原因,国家气象局的xml网站对我不起作用。当我说"不起作用"时,我的意思是我已经尝试了XMLHttpRequest和ajax从 http://w1.weather.gov/xml/current_obs/KSFO.xml 获取xml数据,以便编写显示当前天气状况的脚本。这是我的代码:
(function (){
updateWeather();
})();
function updateWeather(){
var url= "http://w1.weather.gov/xml/current_obs/KSFO.xml";
$.ajax({
url: url,
dataType: 'xml',
error:function(xhr){
document.getElementById("weatherbox").innerHTML="error" +xhr.status+xhr.statusText;},
success:function(result,status,xhr){
document.getElementById('weatherbox').innerHTML="success";
}
});
}
我知道您通常不能跨域请求信息,但是NWS站点表示它向公众开放并且使用ajax调用,并且由于似乎没有其他人遇到此问题,因此一定不是跨域错误,但是我已经尝试在ajax调用中使用crossDomain: true
。我试过制作网址"https:...."相反,但这没有任何作用。我也尝试在 ajax 调用中指定type:'GET'
。每次我运行脚本时,它都会返回error0error
.有人有什么想法吗?ajax 调用的工作实现会更好,我已经为此工作了好几天,这让我发疯,我似乎无法检索这些数据。
作为对第一条评论的回应,我之前已经研究过了,但似乎 SOAP 服务是用于请求数据包的,例如"1 月至 9 月旧金山的天气"之类的,从这个外观来看:
"当前天气状况的XML提要此页面提供对美国和美国领土约 1,800 个地点的观测到的当前天气状况的访问。提供了两种专为计算机到计算机数据传输而设计的文件格式。提供 RSS 和 XML 列表是为了帮助自动传播此信息。有关 RSS 和 XML 格式/源的更多信息。欢迎评论和反馈。有关此产品/服务的其他信息,请参阅此产品描述文档。
选择一个州或领地以查找可用的 XML 天气观测源:
选择上面的州/地区以列出 显示观测台站列表 所有可用台站的索引列表以XML(900kb)格式提供:XML格式"
和
"关于 XMLNWS提供每小时的天气观测,格式为xml标签,以帮助通过用于填充数据库,在网页或其他类似应用程序上显示信息的自动化程序解析信息。这种格式不要与 RSS 混淆,RSS 阅读器和聚合器无法读取。这些文件以易于解析的字符串形式提供比 RSS 源更详细的信息。RSS 和 XML 源都提供图标图像的 URL。此外,还提供了 XML 标记中可能出现的短语列表和建议的图标。若要访问这些源,请选择一个状态,然后选择列中的最后一个 XML 链接。
从这个网站: http://w1.weather.gov/xml/current_obs/
我应该能够只使用我上面发布的链接中的 XML 来检索当前的观测数据,而不是像用于计算或预测预测趋势那样的包,而且似乎 SOAP 请求服务实际上不适合我的目的,因为我不能只订购一个数据点。
您可以使用 JSONP 请求来避免出现 CORS 错误,但此 SOAP 服务不会将数据包装在脚本中。只需尝试阅读此处的文档。您很可能必须创建一个客户端。NWS还提供了RESTful API。阅读此处的教程。
如果您可以使用 php 代理,请查看解决方案的 http://www.webresourcesdepot.com/cross-domain-javascript-with-simple-php-proxy/,以及 pastebin 上的相应代码链接
总而言之,该解决方案使用与 JS 代码位于同一位置的远程站点的中介。 您可以通过将 url 参数设置为目标来调用代理。假设您将代理代码保存到文件名"weatherproxy.php",并且您的Web服务器支持php模块和curl支持,那么您可以将变量设置为
var url = 'weatherproxy.php?url=http://w1.weather.gov/xml/current_obs/KSFO.xml';
由于您的代理没有其他选项,成功后它将返回一个 json,形式如下:
{ status: { http_code: 200 }, contents: "your xml contents as a string" }
从那里,您必须在"内容"上调用xml解释器。 或者,您可以向该代理提供一些参数以返回原始 xml。参数为"&mode=native"。我不确定jQuery是否可以正确处理返回的XML。
享受探索代码的乐趣。
- 从我的控制器返回一个不同于200的代码以触发ajax错误,这被认为是一种好的做法吗
- JSON分析错误:Java中AJAX、Javascript和Servlet的意外EOF
- 错误405:向Java控制器(Ajax)发送JSON时找不到POST方法
- AJAX简单错误.XMLHttpRequest无法加载http://localhost/mpl/getPage.php.
- VB NET JQUERY AJAX上出现错误500
- 一个ajax循环有两个输出错误innerHTML
- Ajax更新面板随机错误'PRM_MissingPanel'
- 错误:Ajax未定义
- 错误:$.ajax 不是一个函数
- 如何修复此未定义的索引错误?Ajax 到 PHP
- JSONP - 触发器完成、成功、错误 Ajax 调用
- 错误:ajax 方法中的循环
- Jasmine,一个测试,多个ajax请求(错误:ajax已经被监视)
- 被迫处理一个&在XML文件中,试图解决解析错误$.ajax({..})
- 0x800a138a-JavaScript运行时错误:AJAX调用中需要函数
- 使用量角器spyOn()为jQuery ajax()导致错误"ajax()方法不存在"
- Ajax返回错误调用错误Ajax错误调用
- JQuery错误ajax完成回调触发
- 从控制台进行Ajax调用,得到错误$.Ajax不是函数()
- 类型错误Ajax后Flask Python