【问题标题】:Cross-Domain get CSV file跨域获取 CSV 文件
【发布时间】:2012-11-25 03:45:02
【问题描述】:

我似乎无法从 yahoo Finance 获取 CSV 股票文件以“成功”加载 - 完全加载。我已经测试了来自其他问题的不同回调和建议,但它们似乎都不起作用——它们中的大多数都没有输出任何东西。

$(document).ready(function(){
    $.ajax({
        url:"http://finance.yahoo.com/d/quotes.csv?s=XOM&f=sn",
        dataType: 'jsonp',
        success: function(data) {
            alert('good');
        },
        error: function(data) {
            alert(data);
        }
    });
});

​此代码提醒[object Object](“错误”回调),但是可以在网络面板中成功看到 CSV 文件。网络面板中的数据按预期显示为“XOM, Exxon Mobile Corpo”(因此确实加载了)。

我想真正的问题是如何获取我知道已加载的数据。我现在只想alert它......只是想在页面上看到它。我已经花了无数个小时来摆弄这个,但它根本不起作用。

这是一个 jsfiddle: http://jsfiddle.net/V94sQ/3/

【问题讨论】:

  • 仅供参考:如果您不将此用于个人用途,则您违反了 yahoo TOS。 developer.yahoo.com/forum/General-Discussion-at-YDN/…
  • 是的,我已经读过了。我用它来创建我自己的股票平台(这是为我的个人用途定制的)。它将从 localhost 运行。

标签: javascript ajax json jsonp


【解决方案1】:

除非他们支持 CORS,否则您不能 request CSV files from another domain。由于您无法控制雅虎,因此您在那儿很不走运。您需要使用代理 [从您自己的服务器请求,后端发出 get 请求] 或 service 可以将其转换为 jsonp 请求。

【讨论】:

  • 等等,我认为 jsonp 允许跨域访问。到目前为止,我可以在我的网络面板中看到该文件。如果它返回一个对象,那不就意味着它起作用了吗?
  • jsonp 如果您调用的网络服务支持它,则允许它。它不会神奇地转换响应,这会破坏跨域策略。
  • 有趣,我测试了“服务”并且它有效!谢谢,我会改用这个。
猜你喜欢
  • 1970-01-01
  • 2012-10-26
  • 2013-02-28
  • 2013-05-31
  • 1970-01-01
  • 2019-06-21
  • 2011-06-19
  • 2017-01-18
  • 1970-01-01
相关资源
最近更新 更多