如何使用jQuery ajax从这个json字符串中获取jsonp响应

时间:2013-04-01 05:45:21

标签: jquery ajax jsonp

我似乎无法找到任何信息来帮助我这个或者我做错了很可能就是这种情况。我在这个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 

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

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

1 个答案:

答案 0 :(得分: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请求发送到您自己的脚本。