我有一个返回MVC JsonResult的ajax方法。我使用数据填充第三方控件数据源。第三方控件期望数据不是字符串(即,它周围没有双引号)。如果我警告jquery ajax调用中返回的数据,它没有显示双引号:
[[10, 10], [15, 20], [20, 25], [32, 40], [43, 50], [55, 60], [60, 70], [70, 80], [90, 100]]
但是,如果我通过fidler查看数据,它会显示我的数据在双引号内:
“[[10,10],[15,20],[20,25],[32,40],[43,50],[55,60],[60, 70],[70,80],[90,100]]“
第三方控件没有正确设置数据源,我确信这是因为(如果我通过硬编码上述数据来填充数据源,它可以正常工作)
答案 0 :(得分:7)
您应该使用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]]");
答案 1 :(得分:2)
从服务器返回的JSON是一个字符串。服务器无法发送Javascript对象。
如果控件需要Javascript对象,则需要解析该字符串。您可以使用$.parseJSON
来解析字符串并从中创建Javascript对象,或者更好地使用$.getJSON
之类的方法来获取它或在@.ajax
选项中指定daraType: 'json'
,然后在调用success
回调函数之前自动解析字符串。
答案 2 :(得分:0)
如果使用$ .getJSON而不是ajax获取数据,它将作为对象而不是字符串返回。
$.getJSON('your/ajax/url', function(json){ ...your code here...});
答案 3 :(得分:0)
使用此格式,在数字值中添加浮动
$json[]= array($row[0],(float)$row[1],(float)$row[2]);