2009-05-26 69 views
1

jQuery有很酷的方法,比如getJSON,get和load。但是他们最终都会进行AJAX调用。如何使用jQuery访问API

我想访问API www.eventsinindia.com/cities/mumbai/events.js?month=2009-05。

该API调用返回JSON格式的数据。

我找不到任何方式从jQuery调用此API并以JSON格式获取输出数据。我不断收到受限制的URI被拒绝的“code:”1012错误,因为jQuery试图进行AJAX调用。禁止从独立页面到服务器的AJAX调用。

回答

2

因为它位于不同的域上,您使用的是JSONP回调吗?

http://docs.jquery.com/Ajax/jQuery.getJSON

在jQuery 1.2中,你可以加载JSON位于另一个域 数据,如果你 指定了JSONP回调,可以 做到像这样: “?myurl回调=”。 jQuery自动替换? 用正确的方法名称调用, 调用您指定的回调。此 回调参数可能因API上的 而异,例如Yahoo Pipes 需要“_callback =?”

+0

JSONP也对服务器端的支持。正常的JSON响应应该被包装在url参数的值内。因此,如果你有myurl?callback = a32b5c2,结果应该如下所示: a32b5c2({}); – gregers 2009-05-26 18:53:01

0

由于@ceejayoz建议JSONP技术必须用于访问不同域上的数据。但为了实现此目的,服务器端脚本必须启用JSONP,这意味着它必须接受一个参数,该参数将定义一个客户端回发函数名称以预先添加到JSON数据中。如果不是这种情况,则需要在承载客户端脚本的域上编写服务器脚本,以充当通向外部域的桥。

0

如果它不是一个跨域请求,你只需要:

jQuery.getJSON("/cities/mumbai/events.js?month=2009-05", function(json) { 
    alert(json[0]); 
});