如何从Javascript中读取数据

时间:2015-04-28 05:11:53

标签: javascript json highcharts

我尝试使用Javascript从" http://table.finance.yahoo.com/table.csv?s=000001.sz"中读取来自雅虎财经的股票数据,该数据返回csv文件并将数据转换为json格式,如{{ 3}}?用于highcharts。

我尝试使用$ .ajax get和jquery.get,但都没有用。有人可以告诉我如何从URL中读取数据并将其转换为json吗?非常感谢。

2 个答案:

答案 0 :(得分:1)

这可以通过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>";
?>

现在,根据Highcharts API可接受的JSON格式,您需要调整数组如何编码为JSON。 如果传入数据的大小很大,也请避免使用JSON_PRETTY_PRINT

答案 1 :(得分:0)

我猜您正面临跨域问题。使用jsonp调用进行跨域请求。使用类似这样的东西

 $.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"); }

    });        
});