【发布时间】:2015-03-13 19:11:15
【问题描述】:
我正在尝试从 openweathermap.org 获取 xml 数据。所以我得到这样的url:“http://api.openweathermap.org/data/2.5/weather?q=London,uk&mode=xml”(这个是为了测试)结果是天气的xml数据。所以 url 对我来说很好。
我想创建一个小型网络应用程序,向我展示我所在城镇的天气。所以首先,我这样做是为了获取 xml:
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","http://api.openweathermap.org/data/2.5/weather?q=London,uk&mode=xml", false); //here i get error notice
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
var firstRow = xmlDoc.getElementsByTagName('temperature');
这可以正常工作但是我在行 xmlhttp.open 中收到错误消息。消息是这样的:
主线程上的同步 XMLHttpRequest 已被弃用,因为它对最终用户的体验产生不利影响。如需更多帮助,请查看http://xhr.spec.whatwq.org/
现在这个问题,有时我请求的 xml 没有加载(所以我的数据是空的)。然后我还用调试器检查它,在这种情况下,xmlhttp.open 是下划线(带有上面的消息)和 xmlhttp.send(),其中错误是空请求。然后我刷新几次,它得到数据。
知道这个错误信息是什么,如何解决?求救
【问题讨论】:
-
既然您使用的是 jquery,那么根据您给帖子的标签,为什么不使用 jquery 的 ajax API 来代替呢?在这种情况下,您可以使用异步调用并在请求完成时调用一个回调,该回调对数据执行您需要的任何处理。
-
这条信息的哪一部分你不明白?
xmlhttp.open()的第三个参数必须是true才能使用异步XMLHttpRequest并避免此消息。然后,您需要为异步响应而不是同步响应编写代码。有关工作示例,请参阅developer.mozilla.org/en-US/docs/AJAX/…。但是,正如 ewh 所说,使用 jQuery 的 Ajax 支持会简单得多。 -
@ewh thx 寻求建议,您能否检查我发布的答案,如果这是可能的解决方案?非常感谢您的帮助
标签: jquery xml xmlhttprequest load