JSON数据格式不正确

时间:2012-02-29 20:21:11

标签: javascript jquery asp.net-mvc jsonp highcharts

我正在尝试使用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) {

所以我想我退后一步,准确地复制他们的数据并将其放在我服务器上的文本文件中并尝试:

所以我试过这个

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

和这个

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

但不起作用

我在检索数据后也尝试过同时使用JSON.parsejQuery.parseJSON,但是再次 - 这似乎不起作用

我也想知道是什么?是他们数据的开始

他们的数据看起来像这样

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

我没有收到任何错误消息,图表只是不显示

任何想法?

解决了它

只需要检索数据并将其转换为数组并将其传递给图表。

需要是一个数组,而不是JSON

2 个答案:

答案 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>