JSON在getJSON()中回调函数名

时间:2013-04-18 06:29:50

标签: javascript jquery json rest jsonp

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

2 个答案:

答案 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的例子

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