我想要一个远程XML文件。我已经阅读过JSONP是在不编写服务器端代码的情况下完成此任务的唯一方法。我正在尝试使用以下代码请求XML文件
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
$.ajax({
url: 'http://www.w3schools.com/xml/note.xml',
dataType: 'jsonp',
success: function(dataWeGotViaJsonp){
console.log(dataWeGotViaJsonp);
}
});
})
</script>
</head>
<body>
</body>
</html>
我收到错误:
资源解释为脚本,但使用MIME类型text / xml传输:“http://www.w3schools.com/xml/note.xml?callback=jQuery1620008313672617077827_1390902958529&_=1390902958534”。 jquery.min.js:18 未捕获的SyntaxError:意外的令牌&lt;
任何帮助都非常感激。
答案 0 :(得分:6)
您可能正在尝试通过JSONP获取数据来绕过同源策略。
但这也意味着你实际上需要获得JSONP,而不是XML。
但您不能将dataType
更改为xml
,因为上述政策不允许您这样做。
因此服务器需要支持JSONP输出。
<强>溶液强>
您确实需要制作一些服务器端代码。
您可以创建一个可以通过例如cUrl访问xml的服务器端脚本,并将其转换为jsonp。
例如:
www.yourserver.com/xmltojson.php?url = http://www.w3schools.com/xml/note.xml
此脚本会将xml转换为json,您可以通过ajax调用获取它。 (因为这个转换是在你自己的服务器上,不需要jsonp,但是常规的json会这样做。
修改强>
为您找到了一个教程:http://weedygarden.net/2011/01/consuming-remote-xml-as-jsonp/