需要将 JSON 解释为变量
Need to interpret JSON as variable
首先,对不起,我的英语不好。我有一个问题。我需要从 ajax 调用创建一个高图表。
这很完美:
chartOptions = { chart: { renderTo: 'grafica1', type: 'area', }, series: [{ data: [1,2,3] }]};
chartprueba = new Highcharts.Chart(chartOptions);
我试图做的是一个带有消息或 json 响应的 ajax,如下所示:
"chart: { renderTo: 'grafica1', type: 'area', }, series: [{ data: [1,2,3] }]}"
所以我需要一种方法让 jQuery 解释它像代码一样不像字符串......
这是我的例子,但不起作用:
msg = JSON.parse(msg);
chartOptions = msg;
chartprueba = new Highcharts.Chart(chartOptions);
因为chartOptions
是一个字符串而不是一个对象...
此字符串
"chart: { renderTo: 'grafica1', type: 'area', }, series: [{ data: [1,2,3] }]}"
不是有效的 JSON。它没有左大括号,它有杂散的逗号,键没有引号。它甚至不是一个有效的javascript对象定义,但请检查json.org
JSON施加的额外严格性。
编辑:根据您在其他地方的评论:
您是 JSON 编码字符串,而不是对象。 你想要的是类似的东西
$retorno = Array(
chart => Array (renderTo =>'grafica1', type => 'area' ),
series => Array(Array(data => Array(1,2,3)))
);
echo json_encode($retorno);
(如果我记得php
语法正确的话)。
首先,您应该尝试更新服务器端资源,以将Object
输出为有效的 JSON。
{ "chart": { "renderTo": "grafica1", "type": "area" }, ... }
然后,JSON.parse()
应该没问题:
msg = JSON.parse(msg);
根据您的其他评论中的片段:
$retorno = " chart: { renderTo: 'grafica1', type: 'area', }, series: [{ data: [1,2,3] }]";
echo json_encode($retorno);
return;
您可以使用 Michael Krelin(迈克尔·克雷林)的建议,在 array()
s 中形成数据并对其进行编码:
$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。
否则,您将不得不eval()
msg
:
msg = eval('(' + msg + ')');
如果输出缺少前导{
,也添加它:
msg = eval('({' + msg + ')');
并且,括号强制将其作为表达式进行评估,因此{...}
被视为Object
文字而不是blocks
。
jQuery中有一个名为$.parseJSON
的函数,这将返回一个对象,从数据创建。
因此,如果您有这样的 JSON:{'val1': 0}
您可以运行 var data = $.parseJSON({'val1': 0});
,这将使您能够通过对象获取值。
例如
data.val1
希望这有帮助,
和破折号; 席德
这是文档的链接
- 有人可以解释一下这个变量的声明方式
- Javascript i(index,iterator):如果用作变量,它将始终被解释为索引位置
- 解释变量如何“泄漏”
- 需要将 JSON 解释为变量
- 你能解释一下这个JavaScript语法(变量外推)吗?
- 语法:const {} = 变量名称,任何人都可以解释或指出我正确的方向
- 使用解释的变量名称循环遍历窗体上的单选按钮
- JSON语法-变量被解释为文字
- JS将作用域分离,以对具有相同名称的多个变量进行解释
- 将javascript连接字符串解释为变量
- Javascript-需要对IIFE中的变量进行解释
- 将 javascript 变量的动态值解释为文本框 id
- DataBinder.Eval返回的值被解释为变量而不是字符串
- 解释JavaScript中的变量作用域
- 将html附加为变量不会解释标记
- 如何在下划线模板中将javascript变量解释为属性
- Laravel 4.2试图解释Backbone.js模板变量
- 解释Javascript文件Laravel中的变量
- 谁能解释给我这个JavaScript代码定义一些变量和循环通过他们
- 无法解释的错误,html中未定义的变量