【问题标题】:JSONP Unexpected token <JSONP 意外令牌 <
【发布时间】: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

非常感谢任何帮助。

【问题讨论】:

    标签: xml json request jsonp


    【解决方案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/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-19
      • 2013-01-28
      • 2014-12-16
      • 2015-08-19
      • 2014-05-27
      • 2012-10-07
      • 2016-04-20
      • 2014-11-24
      相关资源
      最近更新 更多