Javascript 需要将JSON解释为变量

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',类

首先,我很抱歉我的英语不好。我有个问题。我需要从ajax调用创建highchart

这非常有效:

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