【问题标题】:Parse Yahoo Finance Watchlist from a CSV to JSON with jQuery使用 jQuery 将 Yahoo Finance Watchlist 从 CSV 解析为 JSON
【发布时间】:2014-07-23 19:22:00
【问题描述】:

我想使用此代码解析来自 Yahoo 财务 CSV 文件的 JSON 数据。 JSON 链接有效,我只是遇到了 function (data) 和 var data 行的问题。解析表调用function (data),但这与var data 行冲突。 The original code我以前解析表用过function (json),但是这个特定的api好像只对function (data)起作用。

function drawTable() {
// use jQuery to make an AJAX request for data
$.ajax({
    type: "get",
    dataType: "jsonp",
    url: 'https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quoteslist%20where%20symbol%3D%27BRDT%2CAPPL%27&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=',
    success: function (data) {
        var data = new google.visualization.DataTable();

        data.addColumn('string', 'Symbol');
        data.addColumn('number', 'open');


        // parse the JSON into the DataTable
        for (var i = 0; i < json.list.resources.length; i++) {

            var symbol = json.list.resources[i].resource.fields.symbol;
            var open = parseFloat(json.list.resources[i].resource.fields.open);


            data.addRow([symbol, open]);
        }

        var table = new google.visualization.Table(document.querySelector('#table_div'));
        table.draw(data);
    }
});
}
google.load('visualization', '1', {
    packages: ['table'],
    callback: drawTable
});

【问题讨论】:

  • 详细描述您遇到的问题。 “我的线路有问题”描述性不够。
  • 我结合了我发现的两段代码,它们有冲突的函数,一段是函数(数据),另一段是函数(json)。我现在在帖子中建模的代码的工作示例。 jpugliesi 暗示了我的错误,但他建议的解决方案并不能解决问题。

标签: javascript jquery json csv yahoo-finance


【解决方案1】:

我更改了几个变量名称并从 url 上的 https 中删除了“s”,还将诊断设置为 false,因为它抛出了奇怪的符号。

希望这就是你要找的东西

demo

function drawTable() {
    // use jQuery to make an AJAX request for data
    $.ajax({
        type: "get",
        dataType: 'json',
        url: 'http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quoteslist%20where%20symbol%3D%27BRDT%2CAPPL%27&format=json&diagnostics=false&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=',
        success: function (data) {
            var dt = new google.visualization.DataTable();
            dt.addColumn('string', 'Symbol');
            dt.addColumn('number', 'Open');

            // parse the JSON into the DataTable
            for (var i = 0; i < data.query.results.quote.length; i++) {
                Symbol = data.query.results.quote[i].Symbol;

                Open = parseFloat(data.query.results.quote[i].Open);

                if (isNaN(Open)) {
                    Open = 0;
                }

                dt.addRow([Symbol, Open]);
            }

            var table = new google.visualization.Table(document.querySelector('#table_div'));
            table.draw(dt);
        },
        error: function (e, a, s) {
            alert(s);
        }
    });
}
google.load('visualization', '1', {
    packages: ['table'],
    callback: drawTable
});

【讨论】:

    【解决方案2】:

    看起来您正在向success: function(data) 函数传递一个名为data 的JSON 数据变量。然后立即在成功函数中使用 DataTable 对象实例化一个全新的data 变量,从而覆盖先前包含返回的 JSON 数据的data 变量。 (线路:var data = new google.visualization.DataTable();)

    我会尝试将 var data 变量的名称更改为其他名称,例如 data_table,尽管我实际上并没有尝试进行此更改以查看它是否有效。

    希望这会有所帮助!

    【讨论】:

    • 我试过你的方法,但没有骰子。 This 是我选择将函数变量切换为 data 的一个例子。据我了解,将function(data) 与type: "get", 和dataType: "jsonp", 一起使用允许将google api 与相同的代码一起使用,这是我最初的post. 的主要目标有关使用JSON 的两个api 的更多信息可以在那里找到请求。
    猜你喜欢
    • 1970-01-01
    • 2011-12-08
    • 2012-11-19
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多