2012-02-29 118 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中的有效標識符,因此?([....])是無稽之談。