【发布时间】:2016-04-05 03:45:48
【问题描述】:
再次发布这个问题,因为这次代码完全不同。
试图从 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 提要解析到我的 html p 中,id=flights,但没有成功。我在 Firebug 控制台中收到此错误:
SyntaxError: 预期的表达式,得到 '
Firebug->Net->Headers 显示如下:
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 你的 url 应该指向一个 javascript 文件而不是一个 xml 文件。顺便说一句,如果你可以用一行代码绕过它,那么 SOP 将完全没用。
标签: javascript jquery ajax dom jsonp