【问题标题】:Get JSON data from URL using AJAX if possible如果可能,使用 AJAX 从 URL 获取 JSON 数据
【发布时间】:2013-01-04 11:35:33
【问题描述】:

我想从下面的 URL 中获取 JSON 数据并以任何可能的方式在我的网页中使用,可以吗?

http://fantasy.premierleague.com/web/api/elements/100/

(注意我不拥有这个网站,我只是将数据用于一个简单的免费应用程序。)

如果我只是将 URL 输入到浏览器中,它可以工作,但这并不好,因为我希望我的页面使用数据,所以 AJAX 请求是理想的,但我无法让它工作。 我尝试过使用 jQuery AJAX 调用,但无法正常工作。

我开始认为在浏览器中这是不可能的,我需要使用 Mechanize 或类似的东西,这不是一个真正的选择。

谢谢。

【问题讨论】:

  • 那个数据不是 JSON,而是 JSONP。
  • 这篇文章可能对你有所帮助:stackoverflow.com/q/3595515/221781
  • 他们的 JSONP 发生了一些非常奇怪的事情。如果我向它添加回调,它似乎会在服务器端缓存它,即使在发送缓存杀手时也是如此。除非您询问 API 的创建者发生了什么,否则您将面临无穷无尽的问题。

标签: jquery ajax json


【解决方案1】:

我有这个工作,现在错误函数正在执行,状态码为 200。他们是否有可能限制每 x 秒的查询次数,因为它是间歇性工作的。

编辑:他们的缓存发生了一些事情。东西被顶起来了。

$.ajax({
    type:"GET", 
    url: "http://fantasy.premierleague.com/web/api/elements/100/", 
    success: function(data) {
            $("body").append(JSON.stringify(data));
        }, 
    error: function(jqXHR, textStatus, errorThrown) {
            alert(jqXHR.status);
        },
   dataType: "jsonp"
});​​​​​​​​​​​​​​​

【讨论】:

  • 这是我发现的一个使用 Firebug 使用 API 的示例。似乎它将当前时间(以毫秒为单位)放在 URL 之后。这是一个示例:fantasy.premierleague.com/web/api/elements/415/?_=1357337284504
  • 我使用以下代码创建了时间戳,但仍然有问题:var d = new Date();var epocTime = ( d.getTime() - d.getMilliseconds() ); 然后是 url: 'http://fantasy.premierleague.com/web/api/elements/100/?_=' + epocTime
  • 我知道这个答案已经有很多年了,但是您可以删除代码 sn-p 末尾的不可见字符吗?导致浏览器出现非法字符错误。应该在});​​​​​​​​​​​​​​​​​​​​​​后});,并按退格键几次。
猜你喜欢
  • 2013-08-09
  • 2017-10-11
  • 1970-01-01
  • 2016-01-18
  • 2015-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多