2013-04-01 40 views
0

我似乎无法找到任何信息来帮助我解决这个问题或者我正在做这一切,这很可能是这种情况。我有一些样品JSON数据在这个网址:如何使用jQuery ajax从这个json字符串获取jsonp响应

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

注:该网页大约需要20秒的负载....

我跑它通过JSON验证,它回来了干净。我试图从该页面请求数据只是与jonsp数据类型的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 

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

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

+0

尝试添加'?callback =?'到您的网址? –

+0

我有,但我不知道我知道如何正确使用它。每次我添加一个回调:等等,我得到一个错误:'等等'没有定义。如果我像你说的那样添加它,我仍然会得到错误并且没有结果。我仍然很难用jsonp的回调函数,在过去的几天里我读过的所有内容都没有提到,如果甚至不知道如何从中提取数据。 – RyGuy

回答

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请求发送到您自己的脚本。

+0

好吧,我很抱歉成为这样的新手,但我基本上格式化回应,所以如果我添加'somecallback'阵列的前面,我可以再回调为jsonp?感谢您的快速回复。 – RyGuy

+0

@RyGuy no。服务器需要将它的标题设置为接受JSONP。 –

+0

但是你不能添加它。这是需要支持这种格式的网站。如果它不行,它将无法工作。 –