为什么这里出现“意外令牌”错误?

时间:2013-04-07 14:25:43

标签: javascript jquery ajax api jsonp

我正在尝试从我的朋友正在处理的API中输出一个变量。 API完全打开,因此不需要身份验证。

<html>
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script src="http://profusum.se/js/jsonp.js"></script>
</head>
<body>
    <script>
        $.jsonp({
            url: "http://blackcab.didair.se/api/drivers",
            //callbackParameter: '',
            timeout: 45000,
            success: function (driversData, statusTwo) {
                $.each(driversData, function (i, data) {
                    var name = driversData.drivers[1].name;
                    document.write("<p> Namn: " + name);
                });
            },
        });
    </script>
</body>
</html>

但是在使用Chrome开发者工具时出现此错误:

Uncaught SyntaxError: Unexpected token :                               drivers:1

为什么我会收到此错误?

1 个答案:

答案 0 :(得分:0)

使用jQuery确认返回的数据不是JSONP且无法转换为它:

$.getJSON( "http://blackcab.didair.se/api/drivers?callback=?",
            //callbackParameter: '',
            function (data) {
            console.log("this is data:",data);
});

结果:

SyntaxError: invalid label
{"drivers":[{

网站返回JSON而不是JSONP。为了让另一个站点连接到blackcab.didair.se,blackcab.didair.se必须返回JSONP或设置一个cors响应头(在维基百科上查找cors和相同的源策略)。

目前blackcab.didair.se正在返回JSON,这与JSONP不一样