0

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

如果我用闪烁的 JSON url 替换我的 url,我会成功。我可以在响应中看到数据的显示方式不同,但我不知道如何将我的数据更改为与 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);

        },
    });
});

我希望你能理解我的问题

最好的问候拉斯穆斯

4

1 回答 1

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 ), ");";
于 2013-09-11T09:26:17.767 回答