JSONP意外的令牌<

时间:2014-01-28 10:07:33

标签: xml json request jsonp

我想要一个远程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;

任何帮助都非常感激。

1 个答案:

答案 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/