使用JSONP从外部服务器获取数据

时间:2013-09-11 09:20:47

标签: ajax json get jsonp external

我试图从外部服务器上的web api获取一些数据。我可以在网络下看到正确的数据 - > Chrome调试程序中的响应。

如果我用闪烁的JSON url替换我的url,我会获得成功。我可以在Response中看到数据的显示方式不同,但我不知道如何将我的数据更改为与flickr相同。

我做了一个小提琴演示我的问题:jsfiddle/8JDna/2/

<body>
    <div id="content">

        <div class="well">

        </div>        
    </div>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
</body>

$(function () {

    var thisMonth = 0;

    var flickrURL = 'http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?';
    var myURL = 'http://driving.thylle.dk/api/distance?jsoncallback=?';

    $.ajax({
        url: myURL,
        jsonp: "callback",
        dataType: "jsonp",
        data: {
            format: "json"
        },
        success: function (data) {

            $(".well").html("<h3> SUCCESS </h3>");
        },
        error: function (xhr, textStatus, errorThrown) {

            $(".well" ).html("Error: " + textStatus + ": " + errorThrown);

        },
    });
});

我希望你能理解我的问题

最好的问候Rasmus

1 个答案:

答案 0 :(得分:1)

第二个URL下的服务器实际上并不返回JSONP响应,而只是简单的JSON。如果您可以控制该服务器,则必须使用jsoncallback参数来包装JSON,如下所示:

// jsoncallback=cb
cb( ["you JSON response in here"] );

所以在PHP中,例如,目前你可能有这样的东西:

echo json_encode( $result );

您应该将其更改为

echo $_REQUEST['jsoncallback'], "(", json_encode( $result ), ");";