JSONP 意外令牌 <
Posted
技术标签:
【中文标题】JSONP 意外令牌 <【英文标题】:JSONP Unexpected token < 【发布时间】:2014-02-19 13:40:45 【问题描述】:我想请求一个远程 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 Uncaught SyntaxError: Unexpected token
非常感谢任何帮助。
【问题讨论】:
【参考方案1】:您可能正试图通过 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/
【讨论】:
以上是关于JSONP 意外令牌 <的主要内容,如果未能解决你的问题,请参考以下文章
Jquery ajax响应说“意外的令牌':'”(使用jsonp作为数据类型)[重复]
如何使用 angularjs $http 修复我的 jsonp 回调以解决“意外令牌”错误?
“未捕获的语法错误:意外的令牌:”与 $http.jsonp