Can';t get jQuery从另一个域获取JSON(使用JSONP)
我正在使用一个API(我制作了这个API,并可以在必要时进行修改),它可以输出一些JSON(使用PHP的JSON_编码,所以它是有效的)。我在另一个域的另一个网站上使用它来检索数据 不幸的是,我似乎无法让它发挥作用。请求被提出,并且数据被检索到,据我所知,从Chrome开发者工具(结果已经从API下载)。不过,似乎没有进一步的处理 请求URL如下所示(将“查询”替换为实际查询,在本例中为带名称): 结果如下所示(有效的JSON): 我用于获取此数据的jQuery如下所示:Can';t get jQuery从另一个域获取JSON(使用JSONP),jquery,json,jsonp,Jquery,Json,Jsonp,我正在使用一个API(我制作了这个API,并可以在必要时进行修改),它可以输出一些JSON(使用PHP的JSON_编码,所以它是有效的)。我在另一个域的另一个网站上使用它来检索数据 不幸的是,我似乎无法让它发挥作用。请求被提出,并且数据被检索到,据我所知,从Chrome开发者工具(结果已经从API下载)。不过,似乎没有进一步的处理 请求URL如下所示(将“查询”替换为实际查询,在本例中为带名称): 结果如下所示(有效的JSON): 我用于获取此数据的jQuery如下所示: $(document
$(document).ready(function(){
getSearch("Noah and the Whale");
});
$(document).ready((function(query) {
getSearch = function(query) {
url = "http://gatekrash.com/api/v1?t=search&s=national&p=0&n=15&q=" + query + "&callback=?";
$.getJSON(url,
function(json) {
alert("Success!");
}
);
}
})());
据我所知,这应该行得通。我在API所属的站点上使用基本相同的代码(减去回调=?)来检索数据,没有任何问题,因此我认为这可能是跨域的事情
在我看来,解决方案可能是如此明显和简单,但我还没有成功地让它发挥作用
有什么想法吗?我想跨域可能有问题:
跨域JSONP需要回调才能工作 “p”代表“Padded”;即使用函数调用。为了绕过跨域策略,对于每个JSONP请求,jQuery在DOM中创建一个脚本标记,并将请求的URL作为源。JSON被加载到脚本标记中,然后执行,就像其他脚本一样。问题在于,执行一个对象并不能完成很多工作,相反,一个函数调用被包装在它周围,以便将该对象作为参数传递给该回调 JSON:(通常使用XMLHttpRequest等将文本直接加载到javascript中) JSONP:(通常加载到脚本标记中以避免跨域策略) 后者将在加载JSONP时调用方法“nameOfCallback”,将对象作为唯一参数传递 对于未来的谷歌用户来说,这可能会提供更多帮助
[{"id":"4123","title":"Noah And The Whale","type":null,"start":"2011-03-30 19:30:00","end":"2011-03-31 00:30:00","venue":{"id":"154","name":"The Deaf Institute"},"place":{"id":"17374","name":"Manchester"},"source_count":"1","performers":""},{"id":"9317","title":"Noah And The Whale","type":null,"start":"2011-05-04 19:00:00","end":"2011-05-05 00:00:00","venue":{"id":"539","name":"Leeds Metropolitan University"},"place":{"id":"15473","name":"Leeds"},"source_count":"1","performers":""}]
$(document).ready(function(){
getSearch("Noah and the Whale");
});
$(document).ready((function(query) {
getSearch = function(query) {
url = "http://gatekrash.com/api/v1?t=search&s=national&p=0&n=15&q=" + query + "&callback=?";
$.getJSON(url,
function(json) {
alert("Success!");
}
);
}
})());
{ "really":"simple", "example":"object" }
nameOfCallback({ "really":"simple", "example":"object" })