2012-02-29 119 views
3

我试图创造一些JSON用于显示使用Highcharts不正确的JSON数据格式

http://www.highcharts.com/

我抄他们的例子之一的图表:

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) { 

所以我想我会退后一步,准确地复制thier数据,并把它放在一个文本文件,我的服务器上,并尝试:

所以,我想这个

$.getJSON('/data.txt', function (data) { 

$.get('/data.txt', function (data) { 

但既不工作

我也同时使用JSON.parsejQuery.parseJSON检索数据后尝试过,但再次 - 这似乎并没有工作

,我也想知道什么?在他们的数据

开始

他们的数据看起来像这样

?([[<some data>],[some data]]); 

我没有得到任何错误信息,图形只是不显示

什么想法?

解决它

只需要以检索数据,并把它变成一个数组并把它传递到图表中。

需要被一个数组,不JSON

+0

我现在有同样的问题...我不认为你可以给你更多关于你如何解决它的信息?试图将Highcharts集成到一个项目中,我无法弄清楚为什么他们的演示工作和使用我自己的不会......在理解其他答案时出现问题......为您+1了。 – Wil 2012-03-18 12:15:49

回答

3

该数据源被ouputting JSONP,这对于跨域AJAX请求。由于额外的callback(...)包装,它不是有效的“原始”JSON。

在这里了解一下:http://api.jquery.com/jQuery.ajax/在'dataType'部分。

+0

如果您请求的网址不在您自己的服务器上,它几乎总是被视为跨域请求,并被JS引擎忽略/终止。没有规定你不能使用jsonp作为'本地'ajax请求,这只是没有必要,并增加了一些额外的开销。 – 2012-02-29 21:01:09

2

正如你在你的标签中所说的,它不是JSON,它是JSONP。不要解析它,用回调来捕捉它。使用jQuery.getScript来做到这一点,并定义function callback(data)。在该函数内部,data应该包含(已解析)对象。另外,将URL中的?替换为callback(或任何您命名的函数) - ?不是JavaScript中的有效标识符,因此?([....])是无稽之谈。