我尝试使用Javascript从" http://table.finance.yahoo.com/table.csv?s=000001.sz"中读取来自雅虎财经的股票数据,该数据返回csv文件并将数据转换为json格式,如{{ 3}}?用于highcharts。
我尝试使用$ .ajax get和jquery.get,但都没有用。有人可以告诉我如何从URL中读取数据并将其转换为json吗?非常感谢。
答案 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"); }
});
});