2012-09-19 82 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]);