我正在尝试使用Highcharts创建一些用于显示图表的JSON
我复制了他们的一个例子:
http://www.highcharts.com/stock/demo/basic-line
点击图表下方的“查看选项”查看来源。还有一个JSFiddle与
一起玩如果我在本地复制它一切正常。
问题是当我尝试使用自己的数据源时。
我有一个ASP.Net MVC控制器,它正在吐出一个数组列表,就像它们的数据源一样。但是,这不起作用。
他们的数据源看起来像这样 http://www.highcharts.com/samples/data/jsonp.php?filename=aapl-c.json&callback=?
他们就像这样检索它
$.getJSON('http://www.highcharts.com/samples/data/jsonp.php?filename=aapl-c.json&callback=?', function (data) {
所以我想我退后一步,准确地复制他们的数据并将其放在我服务器上的文本文件中并尝试:
所以我试过这个
$.getJSON('/data.txt', function (data) {
和这个
$.get('/data.txt', function (data) {
但不起作用
我在检索数据后也尝试过同时使用JSON.parse
和jQuery.parseJSON
,但是再次 - 这似乎不起作用
我也想知道是什么?是他们数据的开始
他们的数据看起来像这样
?([[<some data>],[some data]]);
我没有收到任何错误消息,图表只是不显示
任何想法?
解决了它
只需要检索数据并将其转换为数组并将其传递给图表。
需要是一个数组,而不是JSON
答案 0 :(得分:3)
该数据源正在输出JSONP,这是针对跨域AJAX请求的。由于额外的callback(...)
包装器,它不是有效的'原始'JSON。
在此处阅读:{dataType'部分下的http://api.jquery.com/jQuery.ajax/。
答案 1 :(得分:2)
正如你在标签中所说,它不是JSON,而是JSONP。不解析它,用回调捕获它。使用jQuery.getScript
执行此操作,然后定义function callback(data)
。在该函数内部,data
应包含(已解析的)对象。另外,将网址中的?
替换为callback
(或您命名为函数的任何内容) - ?
不是JavaScript中的有效标识符,因此?([....])
是无意义的。< / p>