2012-09-19 81 views
1

我有一個返回MVC JsonResult的ajax方法。我使用這些數據來填充第三方控件數據源。第三方控件希望數據不是字符串(即沒有雙引號)。如果我提醒在jQuery的AJAX調用返回的數據,這表明沒有雙引號:從JSON中刪除雙引號返回的字符串

[[10, 10], [15, 20], [20, 25], [32, 40], [43, 50], [55, 60], [60, 70], [70, 80], [90, 100]] 

但是如果我通過菲德勒的數據看它顯示我的數據是雙引號:

「[[10,10],[15,20],[20,25],[32,40],[43,50],[55,60],[60, 70],[70,80] ,[90,100]]「

第三方控件沒有正確設置數據源,我確信它是因爲這個(如果我填充數據源通過硬編碼上述數據,它工作正常)

+3

你試過'JSON.parse'ing(或'$ .parseJSON')返回的數據? –

回答

7

如果你得到$ .getJSON而不是AJAX的數據,您應該使用eval()或JSON.parse()來

var array = eval("[[10, 10], [15, 20], [20, 25], [32, 40], [43, 50], [55, 60], [60, 70], [70, 80], [90, 100]]"); 

var array = JSON.parse("[[10, 10], [15, 20], [20, 25], [32, 40], [43, 50], [55, 60], [60, 70], [70, 80], [90, 100]]"); 
+0

你應該比'eval'更喜歡'JSON.parse'(甚至''.parseJSON')。 –

+0

如果您的瀏覽器不支持JSON,請使用https://github.com/douglascrockford/JSON-js中的json2.js – prashanth

0

,它會返回一個對象而不是字符串。

$.getJSON('your/ajax/url', function(json){ ...your code here...}); 
2

從服務器返回的JSON是一個字符串。服務器不可能發送Javascript對象。

如果控件需要一個Javascript對象,那麼你需要解析字符串。您可以使用$.parseJSON來解析字符串並從中創建一個Javascript對象,或者更好地使用$.getJSON這樣的方法來獲取它,或者在@.ajax選項中指定daraType: 'json',然後在調用success回調函數之前將自動分析該字符串。

0

使用這種格式,加浮在你的數值

$json[]= array($row[0],(float)$row[1],(float)$row[2]);