2013-02-04 114 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