2012-08-16 70 views
2

我试图让一个AJAX GET请求到this URL并处理JSON响应。如果你直接访问该URL,它就可以工作。我也尝试过运行Hurl Itit worksjQuery Ajax - 意外令牌:

我在那里为了不知道为什么我不能通过jQuery向它发出JSON/JSONP请求。

我最初试图让一个JSON响应,但得到:

XMLHttpRequest cannot load http://hndroidapi.appspot.com/news/format/json/page/. Origin http://hackernews.dev is not allowed by Access-Control-Allow-Origin. 

因此,因此我把在JSONP的尝试,并获得

Uncaught SyntaxError: Unexpected token : hndroidapi.appspot.com:1 

1号线是整个JSON响应,在一个线,但不是包裹在回调。因此,看起来这个API不支持JSONP。

因此,有什么我可以做的解决这个问题?不幸的是,我有点难过,似乎没有办法解决这个问题。

我的代码如下:

var ajaxReq = $.ajax({ 
    url: "http://hndroidapi.appspot.com/news/format/json/page/", 
    dataType: "jsonp" 
}); 
ajaxReq.done(function(d) { 
    console.log("DONE", d); 
}); 
ajaxReq.error(function(d) { 
    console.log("ERROR", d); 
}); 

任何帮助,非常感谢!

+0

所以你在json响应中出现“Unexpected token:”错误,对吗?听起来像它没有正确格式化json。 – MrOBrian 2012-08-16 19:17:03

+0

你可以通过jsonlint.com运行你的反应,并确切地看到你的问题在哪里。 – scrappedcola 2012-08-16 19:18:24

+0

如果我通过JSON Lint运行它,它说JSON是有效的。我相信这个错误是围绕着一个缺少的回调参数。 – 2012-08-16 19:19:30

回答

0

的API绝对不支持JSONP(除非我失去了一些东西,不是太熟悉Python):https://github.com/glebpopov/Hacker-News-Droid-API/blob/master/Formatter.py你在这一点上唯一的选择是要么使用YQL或服务器端代理

+0

是的,就是这样。也许我可以分叉它并添加JSONP支持。惊人的HN没有自己的API! 。谢谢。 – 2012-08-16 20:03:57

0

出于安全原因,您无法向网站以外的网站发出AJAX请求。

+2

你可以使用带回调的JSONP,但看起来这个服务器不支持它。我想知道是否有解决方法。 – 2012-08-16 19:15:37