【问题标题】:using $.getJSON to retrieve CSV data使用 $.getJSON 检索 CSV 数据
【发布时间】:2013-02-13 11:38:10
【问题描述】:

我正在尝试使用 Yahoo 的 Finance API 检索股票数据:

        $.ajax({
            dataType: "json",
            url: 'http://download.finance.yahoo.com/d/quotes.csv',
            data: 's=RHT+MSFT&f=sb2b3jk&callback=?',
            success: function (d) {
                console.log(JSON.stringify(d));
            },
            error: function (d, a, b) {
                console.log(JSON.stringify(d));
                console.log(JSON.stringify(a));
                console.log(JSON.stringify(b));
            },
            complete: function (d, a, b) {
                console.log(JSON.stringify(d));
                console.log(JSON.stringify(a));
                console.log(JSON.stringify(b));
            }
        });

调用有效,我可以在响应中看到 csv 文本(使用 Chrome 的开发者工具):

现在,我的问题是我无法访问响应中包含的文本。

正如您在原始脚本中看到的那样,我尝试在 "success""error""complete" 回调中捕获响应,但响应文本不包含在其中任何一个中。此外,只会引发 "error""complete" 回调。

感谢您对此的任何见解,在此先感谢!

ps。我使用 CSV 查询而不是 YQL 查询的原因是 CSV 查询更容易指定我需要的字段。我发现 YQL 查询使用起来要麻烦得多。

【问题讨论】:

  • CSV 不是 JSON。顾名思义,$.getJSON用于 JSON。$.getJSON 不能很好地与 CSV 配合使用会令人惊讶吗?
  • 旁注:使用console.log()stackoverflow.com/questions/4743730/…
  • 看看this answer。它可以帮助你。
  • 你们怎么反应这么快?这里的社区太棒了...@MattBall 你说得对,我承认,尝试使用 JSON 数据类型获取 CSV 数据是相当违反直觉的。我只是还没有找到一种新颖的方法来通过javascript(ajax)以任何其他方式检索它。当然,如果有的话,我对任何其他想法完全持开放态度。谢谢!
  • 使用$.get$.ajax

标签: jquery ajax csv getjson


【解决方案1】:

$.getJSON() 方法接受 text/json 内容类型,而 CSV 不属于此类型。

这是一个简写的Ajax函数,相当于:

$.ajax({
  dataType: "json",
  url: url,
  data: data,
  success: success
});

complete 之所以会执行,是因为无论请求导致success 还是error,它都会执行。

【讨论】:

  • 感谢您的洞察力,我实际上意识到了这一点。问题不是发起呼叫,而是使用响应中包含的数据。我将在下面发布另一个问题来说明(由于零声誉点,我无法发布图片,但现在我要感谢您!)。
  • @JoeC 我的意思是您收到了响应,但 Ajax 调用不接受它,因为它不是可接受的数据类型。
猜你喜欢
  • 1970-01-01
  • 2016-01-05
  • 2015-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-03
  • 2014-11-22
  • 1970-01-01
相关资源
最近更新 更多