2013-02-04 145 views
1

我想使用jQuery ANA阿賈克斯從這個鏈接獲取使用jQuery和Ajax

http://praytime.info/getprayertimes.php?lat=31.950001&lon=35.9333&gmt=180&m=3&y=2013&school=0&format=json&callback=爲READ JSON數據祈禱時間JSON數據?

,這是我的代碼:

$(document).ready(function() { 

var strUser ="http://praytime.info/getprayertimes.php?lat=31.950001&lon=35.9333&gmt=180&m=3&y=2013&school=0&format=json&callback=?"; 

$.ajax({ 
    url: strUser , 
    dataType: 'jsonp',  
    success: function(data){ 

     jQuery.each(data, function(){ 
      alert("yes"); 

     });     
    } 

    }); 


}); 

我想這個代碼等環節,這是正確的,但是從指定的鏈接我沒有得到任何放出來,你能幫助我嗎?

+2

URL正在輸出'json',但是對於跨域需要'jsonp'。並非所有API都提供'jsonp',在這種情況下,您將需要使用代理來檢索數據 – charlietfl

+1

'jsonp'!=跨域'json'。服務器需要了解您的請求。 –

+0

@charlietfl你可以把它變成答案嗎? –

回答

1

您試圖使用JSONP訪問的url不支持它。服務器需要將響應作爲JSON返回,但也會在請求的回調中包裝響應。所以解決這個問題的方法是使用服務器端代理,其獲取從指定的URL的響應,並將其傳遞到您的客戶端的js,如:

$.ajax({ 
    type: "GET", 
    url: url_to_yourserverside_proxy, 
    dataType: "json", 
    success: function(data) { 
     console.log(data); 
    } 
}); 

其中 url_to_yourserverside_proxy是一個服務器端文件從指定的URL獲取響應

+0

謝謝您的回答 – Alaa

+0

不客氣.. :) –

+0

您能否檢查此鏈接 http://free.worldweatheronline.com/feed/weather.ashx?q=Tripoli,libya=xml&format=json&num_of_days= 5鍵= d35160acaf083722112707&回調=? 在url中顯示它返回json,並且它工作正常,我如何確定差異? – Alaa

1

URL輸出爲json,但是對於跨域需要jsonp

並非所有API的提供jsonp。如果跨域API沒有提供jsonp而且不是CORS,則您將需要使用代理來檢索數據,因爲same origin policy

+0

謝謝你的回答。 – Alaa