使用jQuery将Yahoo Finance Watchlist从CSV解析为JSON

时间:2014-07-23 19:22:01

标签: javascript jquery json csv yahoo-finance

我想使用此代码来解析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
});

2 个答案:

答案 0 :(得分:1)

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

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

希望这有帮助!

答案 1 :(得分:1)

我更改了几个变量名称并删除了&#39; s&#39;来自网址上的https,也将诊断设置为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
});