我的一个视图中有一个highcharts图表,我希望源数据是从返回json响应的路径加载的ajax。
所以我做了一条api路线:
Route::get('api/v1/data/{id}', function($id) {
//Do some stuff and make a key value array with unix timestamp as key and float as value
$data = Model::getData($id);
return $data;
});
我在我的视图中设置了高级图in the demo,但我的api路径是json源。我的图表呈现正常,但未绘制数据。控制台中没有错误。
当我查看api路由的输出时,json输出如下:
{
"1317423600": 0,
"1325289600": -0.17099521359192,
"1333148400": 0.85133638321359,
"1341010800": -0.94235521748172,
"1348959600": 0.37334056741349,
"1356912000": -0.15089107586321,
"1364688000": 10.261663055542,
"1372546800": 9.4860565407533,
"1380495600": 6.2120398914028,
"1388448000": 8.7469537358921,
"1396220400": 8.7985530414845,
"1398812400": 7.633928980909
}
演示json输出为like this:
[
[1147651200000,67.79],
[1147737600000,64.98],
[1147824000000,65.26],
[1147910400000,63.18],
[1147996800000,64.51],
[1148256000000,63.38],
[1148342400000,63.15]
]
我怀疑这就是数据无法渲染的原因。为什么输出的差异以及如何返回highcharts能够理解的响应。
答案 0 :(得分:2)
看起来问题出在数据源(模型数据结果)上。
如果你准备了这样的数据,请检查一下:
$data[] = array(1317423600,0);
$data[] = array(1325289600, -0.17099521359192);
$data[] = array(1333148400, 0.85133638321359);
var_dump(json_encode($data));
它以您想要的格式生成json:
string '[[1317423600,0],[1325289600,-0.17099521359192],[1333148400,0.85133638321359]]' (length=77)
所以......为了解决这个问题,可以尝试这样的事情:
Route::get('api/v1/data/{id}', function($id)
{
// Load DB Data
$data = Model::getData($id);
// Parse Data
$parsedData = array();
foreach ($data as $k => $v)
$parsedData[] = array($k, $v);
// Finish
return $parsedData;
});
答案 1 :(得分:1)
你的json应该是数组,或者你可以使用这个constircutoon { x:1317423600, y:-0.17099521359192 }
如果你使用json_encode()设置一个标志JSON_NUMERIC_CHECK来返回数字,而不是字符串。