我想访问REACTOME REST API来检索一些数据。我使用getJSON()
来获取JSON
数据。但我不知道callback function name
,因为每个网站的名称都不同。
以下无效:
$.getJSON('http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/RESTfulWS/frontPageItems/homo+sapiens?jsoncallback=?', function(data) {
console.dir(data); });
我也试过使用AJAX,因为jQuery文档声明我们可以留下jQuery来决定回调函数。
$.ajax({
type: 'GET',
url: 'http://reactomews.oicr.on.ca:8080/ReactomeRESTfulAPI/RESTfulWS/frontPageItems/homo+sapiens',
dataType: 'jsonp',
success: function(data) {
console.dir(data);
},
error: function(e) {
console.log("error");
答案 0 :(得分:1)
所有迹象都表明服务不支持JSONP。
jQuery中的实际错误是:TypeError: Property 'message' of object Error: jQuery191005664544063620269_1366270377427 was not called is not a function
。
在发出JSONP请求时检查服务器的响应,它是 NOT 包装在回调函数中。所以它返回了......
[ {
"dbId" : 109581,
"displayName" : "Apoptosis",
"created" : {
"dbId" : 109608,
....
但是为了支持JSONP,它需要改为:
jQuery191005664544063620269_1366270377427([ {
"dbId" : 109581,
"displayName" : "Apoptosis",
"created" : {
"dbId" : 109608,
....)
您需要找到一种不同的方式来处理same origin security限制。
最简单的选择可能是使用服务器端代理而不是通过浏览器直接进行。换句话说,jQuery将在您自己的控制下调用服务器(最好在与提供HTML的域相同的域上),然后它将传递服务请求并提供适当的响应。或者,如果您不需要在客户端上保持动态,只需要服务器端脚本(ASP.NET,php等)
答案 1 :(得分:0)
如果网站不支持jsonp我建议你使用服务器端脚本,这里是一个使用php的例子