Javascript 需要将JSON解释为变量
首先,我很抱歉我的英语不好。我有个问题。我需要从ajax调用创建highchart 这非常有效:Javascript 需要将JSON解释为变量,javascript,jquery,ajax,json,highcharts,Javascript,Jquery,Ajax,Json,Highcharts,首先,我很抱歉我的英语不好。我有个问题。我需要从ajax调用创建highchart 这非常有效: chartOptions = { chart: { renderTo: 'grafica1', type: 'area', }, series: [{ data: [1,2,3] }]}; chartprueba = new Highcharts.Chart(chartOptions); 我想做的是一个带有消息或json响应的ajax,如: “图表:{renderTo:'grafica1',类
chartOptions = { chart: { renderTo: 'grafica1', type: 'area', }, series: [{ data: [1,2,3] }]};
chartprueba = new Highcharts.Chart(chartOptions);
我想做的是一个带有消息或json响应的ajax,如:
“图表:{renderTo:'grafica1',类型:'area',},系列:[{data:[1,2,3]}]}”
所以我需要一种jQuery解释类似于代码而不是字符串的方式
这是我的示例,但不起作用:
msg = JSON.parse(msg);
chartOptions = msg;
chartprueba = new Highcharts.Chart(chartOptions);
因为
chartOptions
是字符串而不是对象 jQuery中有一个名为$.parseJSON
的函数,它将返回一个从数据创建的对象
因此,如果您有类似JSON的代码:{'val1':0}
您可以运行var data=$.parseJSON({'val1':0})代码>,这将使您能够通过对象获取值
e、 g
data.val1
希望这有帮助
&短跑;希德
这里是jQuery中有一个名为
$的函数。parseJSON,它将返回一个从数据创建的对象
因此,如果您有类似JSON的代码:{'val1':0}
您可以运行var data=$.parseJSON({'val1':0})代码>,这将使您能够通过对象获取值
e、 g
data.val1
希望这有帮助
&短跑;希德
这是这个字符串的
"chart: { renderTo: 'grafica1', type: 'area', }, series: [{ data: [1,2,3] }]}"
不是有效的JSON。它没有开放的花括号,它有离群的逗号,键不被引用。它甚至不是一个有效的javascript对象定义,但请检查JSON施加的额外严格性
编辑:根据您在其他地方的评论:
您是JSON编码字符串,而不是对象。你想要的是
$retorno = Array(
chart => Array (renderTo =>'grafica1', type => 'area' ),
series => Array(Array(data => Array(1,2,3)))
);
echo json_encode($retorno);
(如果我记得php
语法正确)。这个字符串
"chart: { renderTo: 'grafica1', type: 'area', }, series: [{ data: [1,2,3] }]}"
不是有效的JSON。它没有开放的花括号,它有离群的逗号,键不被引用。它甚至不是一个有效的javascript对象定义,但请检查JSON施加的额外严格性
编辑:根据您在其他地方的评论:
您是JSON编码字符串,而不是对象。你想要的是
$retorno = Array(
chart => Array (renderTo =>'grafica1', type => 'area' ),
series => Array(Array(data => Array(1,2,3)))
);
echo json_encode($retorno);
(如果我记得php
语法正确)。首先,您应该尝试更新服务器端资源,将对象作为有效的JSON输出
{ "chart": { "renderTo": "grafica1", "type": "area" }, ... }
然后,JSON.parse()
就可以了:
msg = JSON.parse(msg);
基于以下文件中的代码段:
您可以使用以下方法形成数据并进行编码:
$retorno = array(
'chart' => array(
'renderTo' => 'grafica1',
'type' => 'area'
),
'series' => array(
array('data' => array(1, 2, 3))
)
);
echo json_encode($retorno);
return;
PHP中的关联数组(带有命名键的数组)将在JSON中编码为Object
s,而非关联数组将保持为Array
s
否则,您将不得不msg
:
msg = eval('(' + msg + ')');
如果输出缺少前导的{
,请同时添加它:
msg = eval('({' + msg + ')');
括号强制将其作为表达式进行计算,因此{…}
被视为对象
文本,而不是。首先,您应该尝试更新服务器端资源,以将对象
作为有效的JSON输出
{ "chart": { "renderTo": "grafica1", "type": "area" }, ... }
然后,JSON.parse()
就可以了:
msg = JSON.parse(msg);
基于以下文件中的代码段:
您可以使用以下方法形成数据并进行编码:
$retorno = array(
'chart' => array(
'renderTo' => 'grafica1',
'type' => 'area'
),
'series' => array(
array('data' => array(1, 2, 3))
)
);
echo json_encode($retorno);
return;
PHP中的关联数组(带有命名键的数组)将在JSON中编码为Object
s,而非关联数组将保持为Array
s
否则,您将不得不msg
:
msg = eval('(' + msg + ')');
如果输出缺少前导的{
,请同时添加它:
msg = eval('({' + msg + ')');
而且,括号强制将其作为表达式进行计算,因此{…}
被视为对象
文本,而不是。尝试控制台.log
-ing您的msg?(为什么不让jquery在执行ajax时解析您的json?)如何检索存储在msg中的json?您收到了哪些错误?console.log(msg);打印此->{chart:{renderTo:'grafica1',键入:'area',},series:[{data:[1,2,3]}]};…和console.log(chartOptions)在第一个示例中是对象{chart:Object,series:Array[1]}…这是在解析之前或解析之后?尝试了console.log
-解析您的msg?(为什么不让jquery在执行ajax时解析json?)您是如何检索存储在msg中的json的?您收到了什么错误?console.log(msg);打印此->{chart:{renderTo:'grafica1',键入:'area',},series:[{data:[1,2,3]}]};…第一个示例中的console.log(chartOptions)是对象{chart:Object,series:Array[1]}…这是在解析之前还是解析之后?谢谢你的回答。我知道这一点,但我的问题我觉得有点大。我从php传递一个字符串,而不是json。看这是我的php代码$retrono=“chart:{renderTo:'grafica1',type:'area',},series:[{data:[1,2,3]}];echo json_encode($retrono);return;这是真的Kevin B。我想做的是从php生成chartOptions。JSON始终是一个字符串,它只是JavaScript对象表示法的简写,您也可以将此字符串解析为$。parseJSON
谢谢您的回答。我知道这一点,但我的问题我认为有点大。我传递的是php的字符串,而不是json、 这是我的php代码$retrono=“chart:{renderTo:'grafica1',type:'area',},series:[{data:[1,2,3]}],”echo json_encode($retrono);return;这是真的Kevin B。我想做的是从php生成chartOptions。JSON始终是一个字符串,它只是JavaScript对象表示法的简写,您还可以根据上面的注释将此字符串解析为$。parseJSON
,前面的{
只是问题文本中缺少了。因此,它至少应该是有效的JavaScript。我知道,我试图做的是将该字符串转换为第一个示例。@JonathanLonowski,是的,但是从对其他答案的注释中可以看出,它不仅仅是问题文本。而且,还是JSON.parse(或者至少大多数实现)仍然会将其作为json拒绝。@Leandro,基于您的c