首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >国家气象局javascript jquery ajax 0错误

国家气象局javascript jquery ajax 0错误
EN

Stack Overflow用户
提问于 2015-01-07 16:43:54
回答 2查看 628关注 0票数 0

由于某些原因,国家气象局的xml站点对我不起作用。当我说“不工作”时,我的意思是我已经尝试过XMLHttpRequest和ajax从http://w1.weather.gov/xml/current_obs/KSFO.xml获取xml数据,以便编写一个显示当前天气状况的脚本。这是我的代码:

代码语言:javascript
复制
(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。我已经尝试将url设置为"https:....“相反,这并没有起什么作用。我也尝试过在ajax调用中指定type:'GET'。每次我运行脚本时,它都会返回error0error。有谁有什么想法吗?ajax调用的有效实现将会更好,我已经在这方面工作了几天了,我似乎无法检索这些数据,这让我抓狂。

作为对第一个评论的回应,我之前研究过它,但从外观上看,SOAP服务似乎是用来请求数据包的,比如“旧金山一月到九月的天气”或其他东西:

“当前天气状况的XML馈送此页面提供了对美国和美国领土上约1,800个地点的观测到的当前天气状况的访问。提供了两种为计算机到计算机数据传输而设计的文件格式。提供了RSS和XML列表,以帮助自动传播此信息。有关RSS和XML格式/馈送的更多信息。欢迎评论和反馈。通过此产品描述文档,还有关于此产品的更多信息。

选择一个州或地区以查找可用的XML天气观测源:

选择上面的州/地区以列出观测站的显示列表所有可用观测站的索引列表以XML格式提供(900kb):XML格式“

“关于XML NWS提供使用xml标记格式化的每小时天气观测,以帮助用于填充数据库、显示网页信息或其他类似应用程序的自动程序分析信息。这种格式不能与RSS混淆,也不能被RSS阅读器和聚合器读取。这些文件以便于分析的字符串形式提供比RSS源更详细的信息。RSS和XML源都提供图标图像的URL。此外,可以使用XML标记中可能出现的短语和建议的图标的列表。要访问这些源,请选择一个状态,然后选择列中的最后一个XML链接。”

来自本网站:http://w1.weather.gov/xml/current_obs/

我应该能够只使用上面发布的链接中的xml来检索当前的观察数据,而不是用来计算或预测预测趋势的包,而且似乎SOAP请求服务实际上不能满足我的目的,因为我不能只订购一个数据点。

EN

回答 2

Stack Overflow用户

发布于 2015-01-07 19:07:27

您可以使用JSONP请求来避免出现CORS错误,但此SOAP服务不会将数据包装在脚本中。试着读一下文档here。您很可能需要创建一个客户端。NWS还提供了RESTful应用编程接口。阅读教程here

票数 0
EN

Stack Overflow用户

发布于 2015-01-08 08:06:18

如果可以使用php代理,那么可以在pastebin上查看解决方案的http://www.webresourcesdepot.com/cross-domain-javascript-with-simple-php-proxy/和相应的代码链接。

总而言之,该解决方案使用与JS代码位于同一位置的远程站点的中介。通过将url参数设置为目标来调用代理。假设您将代理代码保存到名为'weatherproxy.php‘的文件中,并且您的Let服务器支持php模块和curl支持,那么您可以将变量设置为

代码语言:javascript
复制
var url = 'weatherproxy.php?url=http://w1.weather.gov/xml/current_obs/KSFO.xml'; 

由于您的代理没有其他选项,如果成功,它将返回一个带有以下格式的json:

代码语言:javascript
复制
 { status: { http_code: 200 }, contents: "your xml contents as a string" }

从那里你必须在“内容”上调用一个xml解释器。或者,也可以将参数提供给该代理以返回原始xml。参数是'&mode=native‘。但我不确定jQuery是否能正确处理返回的XML。

享受探索代码的乐趣。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27815442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档