0

我似乎找不到任何信息来帮助我解决这个问题,或者我做错了这很可能是这种情况。我在这个 URL 上有一些示例 JSON 数据:

http://dev.plaidduckdesign.com/zen/album.php?aid=1037521524

注意:加载该页面大约需要 20 秒....

我通过一个 json 验证器运行它,它回来了。我正在尝试从该页面请求数据,只是使用 jonsp dataType 的 ajax 请求,因为它不在同一个域中。但我所做的一切都不起作用。我只是不断收到一个未知错误。这是我的ajax请求:

$.ajax({
    url: url,
    dataType: "jsonp",
    data: request,
    success: function(data, textStatus, jqXHR) {
        var obj = jQuery.parseJSON(rootData);
        alert(obj[0].url);
    },
    error: function(jqXHR, textStatus, errorThrown) {
        //alert("error ") 
    } // end error:
}); // end ajax 

我还没有真正获得成功的方法,只是错误。

非常感谢任何信息或指向正确方向的信息。

4

1 回答 1

1

为了使跨域调用正常工作,远程服务器必须支持 JSONP,而不是 JSON。情况似乎并非如此。目前响​​应如下所示:

[
    {
        url: "http://pizzutistudiosphotography.zenfolio.com/img/s8/v74/p1492770658-6.jpg?sn=3&tk=o4bxcOgmoSJ03SfRC3fclWNn73JkTdATCgOQI0JQxKA=",
        width: 640,
        height: 960,
        title: "F2013_0120_Daoust_001",
        copy: "© pizzuti studios photography | pizzutistudios.com",
        caption: "Please respect our copyright. For more information please visit <a target="_blank" href="http://pizzutistudios.com">http://pizzutistudios.com</a>"
    },
    {...}
]

这是一个有效的 JSON。但为了使其正常工作,网站需要支持JSONP格式,如下所示:

somecallback(
    [
        {
            url: "http://pizzutistudiosphotography.zenfolio.com/img/s8/v74/p1492770658-6.jpg?sn=3&tk=o4bxcOgmoSJ03SfRC3fclWNn73JkTdATCgOQI0JQxKA=",
            width: 640,
            height: 960,
            title: "F2013_0120_Daoust_001",
            copy: "© pizzuti studios photography | pizzutistudios.com",
            caption: "Please respect our copyright. For more information please visit <a target="_blank" href="http://pizzutistudios.com">http://pizzutistudios.com</a>"
        },
        {...}
    ]
)

somecallback应在请求中指定的位置。

您应该联系网站的作者并询问他们的网站是否支持 JSONP。如果不是,您不能通过 AJAX 调用来使用它。作为替代方案,您可以在您的域上编写一个服务器端脚本,该脚本将充当桥梁并将请求发送到远程域。然后将您的 AJAX 请求发送到您自己的脚本。

于 2013-04-01T05:50:07.240 回答