0

我想访问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");
4

2 回答 2

1

所有迹象都表明该服务支持 JSONP。

jQuery 中的实际错误是:TypeError: Property 'message' of object Error: jQuery191005664544063620269_1366270377427 was not called is not a function.

在发出 JSONP 请求时检查来自服务器的响应,它没有包含在回调函数中。所以它返回这个......

[ {
  "dbId" : 109581,
  "displayName" : "Apoptosis",
  "created" : {
    "dbId" : 109608,
....

但要支持 JSONP,它需要改为:

jQuery191005664544063620269_1366270377427([ {
  "dbId" : 109581,
  "displayName" : "Apoptosis",
  "created" : {
    "dbId" : 109608,
....)

您需要找到一种不同的方法来处理同源安全限制。

最简单的选择可能是使用服务器端代理,而不是直接通过浏览器。换句话说,jQuery 将调用您自己控制下的服务器(最好与提供 HTML 的域相同),然后它将传递服务请求并提供适当的响应。或者,如果您不需要在客户端上保持动态,只需在服务器端编写整个脚本(ASP.NET、php 等)

于 2013-04-18T07:45:05.643 回答
0

如果网站不支持 jsonp 我建议你使用服务器端脚本,这里是一个使用 php 的示例

http://momotaroblogger.blogspot.co.nz/

于 2013-04-18T15:37:27.307 回答