javascript - 使用 Ajax GET 从服务器获取 XML

标签 javascript jquery ajax dom jsonp

再次发布这个问题,因为这次的代码完全不同。

尝试从 Avinor(挪威航空当局)获取 XML 格式的航类信息。查询示例:http://flydata.avinor.no/XmlFeed.asp?TimeFrom=1&TimeTo=7&airport=OSL&direction=D&lastUpdate=2016-04-04T15:03:00Z

我已经进行了 Ajax GET 查询,以便将 xml feed 解析到 id=flights 的 html p 中,但没有成功。我在 Firebug 控制台中收到此错误:

语法错误:预期表达式,得到“<”

Firebug->Net->标题显示以下内容:

Response headers
Cache-Control   private
Content-Length  28088
Content-Type    text/xml; Charset=iso-8859-1
Date    Mon, 04 Apr 2016 18:32:07 GMT
Server  Microsoft-IIS/7.0
X-Powered-By    ASP.NET

Request headers
Accept  */*
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Connection  keep-alive
Host    flydata.avinor.no
User-Agent  Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:45.0) Gecko/20100101 Firefox/45.0

当我进入 Firebug->Net->XML 时,我可以很好地看到 XML 数据。谁能帮我解决这个问题吗?

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-beta1/jquery.min.js"></script>

<button type="button" onclick="loadFlights()">
Get Flights</button>

<p id="flights"></p>

<script>

function loadFlights() {

 var url = "http://flydata.avinor.no/XmlFeed.asp?TimeFrom=1&TimeTo=7&airport=OSL&direction=D&lastUpdate=2016-04-04T15:03:00Z";
  $.ajax({
    url: url,
    type: "GET",
    dataType: "jsonp",
    success: function myFunction(xml) {
  var x, i, xmlDoc, txt;
  xmlDoc = xml.responseXML;
  txt = "";
  x = xmlDoc.getElementsByTagName("flight_id");
  for (i = 0; i< x.length; i++) {
    txt += x[i].childNodes[0].nodeValue + "<br>";
  }
  document.getElementById("flights").innerHTML = txt;
}
  }); 
};

</script>

</body>
</html>

最佳答案

您要求的是 JSONP — AJAX 会接受该 JSONP,因为填充的 JSON 是您可以通过 AJAX 调用获得跨域的唯一内容。然而你并没有得到 JSON 回来;您正在获取 XML。为了让事情变得更有趣,您尝试将其解析为 HTML。

来自another SE answer .

Finally, let's move onto the main question: Can JSONP be used to fetch XML, or can we parse XML cross-domain? The answer, as others have pointed out, is a resounding NO

所以你运气不太好。对不起。

关于javascript - 使用 Ajax GET 从服务器获取 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36411051/

相关文章:

jquery - 动画背景颜色,如 jQuery 中的进度条

JQuery 在三态图标/按钮中识别当前的 CSS 背景图像?

javascript - jQuery Ajax 在每次 TD 点击时显示值(value)

javascript - 获取使用序列化动态检查输入复选框的所有最近字段的值

javascript - 将脚本从 1.7.1 迁移到 1.9 jQuery (Bootstrap 3)

javascript - 为什么 HtmlUnitDriver 不能定位 WebElements 但 FirefoxDriver 能够定位相同的 WebElements

javascript - 如何将绑定(bind)上下文传递给自定义处理程序调用?

javascript - Chart.js 条形图中的默认视觉样式

JQuery Slider - 滑动后调用函数

javascript - 无法让 document.write 与 ajax 一起使用