2

我正在尝试从我的朋友目前正在处理的这个 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

为什么我会收到此错误?

4

1 回答 1

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 响应标头(在 wikipedia 上查找 cors 和同源策略)。

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

于 2013-04-07T14:53:23.887 回答