2013-04-01 43 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

但是你不能添加它。這是需要支持這種格式的網站。如果它不行,它將無法工作。 –