James
James

Reputation: 1151

How to read data from in Javascript

I'm trying to use Javascript to read stock data from yahoo finance at "http://table.finance.yahoo.com/table.csv?s=000001.sz", which returns a csv file and convert the data into json format as in http://www.highcharts.com/samples/data/jsonp.php?filename=aapl-ohlcv.json&callback=? to be used in highcharts.

I tried using $.ajax get and jquery.get but neither worked. Can somebody tell me how to read the data from the url and convert it into json? Thanks a lot.

Upvotes: 1

Views: 121

Answers (2)

Ashesh
Ashesh

Reputation: 3599

This can be easily done with PHP.

<?php
file_put_contents("data.csv", fopen("http://table.finance.yahoo.com/table.csv?s=000001.sz", 'r'));

//reads the CSV file and save value into an associative array
function csv_to_array($filename = '', $delimiter = ',')
{
    if (!file_exists($filename) || !is_readable($filename))
        return FALSE;

    $header = NULL;
    $data   = array();
    if (($handle = fopen($filename, 'r')) !== FALSE) {
        while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE) {
            if (!$header)
                $header = $row;
            else
                $data[] = array_combine($header, $row);
        }
        fclose($handle);
    }
    return $data;
}

$arr = csv_to_array('data.csv');

//<pre></pre> tags appear only to prevent white-space collapsing

//prints the associative array
echo "<pre>";
print_r($arr);
echo "</pre>";

//displays the the JSON
echo "<pre>";
echo json_encode($arr, JSON_PRETTY_PRINT);
echo "</pre>";
?>

Now depending on the format of JSON that it acceptable to Highcharts API, you are required to tweak how the array is encoded into JSON. Also avoid using JSON_PRETTY_PRINT if the size of the incoming data is large.

Upvotes: 1

Rahaman
Rahaman

Reputation: 333

I guess you are facing Cross Domain issue. Use jsonp calls for Cross Domain requests. Use something like this

 $.ajax({
    url : "http://xx.xx.xx.xx/xxx/xxx",
    type: "GET",
    dataType: "jsonp",
    jsonp : "callback",
    success: function(data) {alert("Success");},
    error: function(data) { alert("Error"); }

    });        
});

Upvotes: 0

Related Questions