Json 未捕获的SyntaxError,jade中for循环中的意外标识符
我正在尝试用一些动态内容渲染一块翡翠。我正在读一篇关于jade的json文章。 我的json看起来像这样Json 未捕获的SyntaxError,jade中for循环中的意外标识符,json,node.js,for-loop,express,pug,Json,Node.js,For Loop,Express,Pug,我正在尝试用一些动态内容渲染一块翡翠。我正在读一篇关于jade的json文章。 我的json看起来像这样 { data1: 'data1', data2: 'data2', data3: [ { name: 'ABC', address: 'India' }, { name: 'DEF', address: 'Australia' }]} 我试图呈现一个jade并使用上面json中的数据 我的玉看起来像 var data1 = #{data1};
{ data1: 'data1',
data2: 'data2',
data3:
[ { name: 'ABC',
address: 'India'
},
{ name: 'DEF',
address: 'Australia'
}]}
我试图呈现一个jade并使用上面json中的数据
我的玉看起来像
var data1 = #{data1};
var data2 = #{data2};
var size = #{data3.length};
for data in #{data3}
var name = data.name;
var address = data.address;
我能够正确地提取上面提到的前3行中的数据。但当我试图从循环中获取数据时,在调试时会出现“未捕获的SyntaXError,意外标识符”错误。
如果我在for循环中放一条线,它工作得很好。前
var name = #{data3[0].name};
渲染正确。但我需要迭代一个循环并在那里获取数据。有人能帮忙吗。
谢谢
更新更多信息
1.我在运行节点服务器时创建了一个json-
var json_string = "{"data1":"data1","data2":"data2","data3":[{"name":"ABC","address":"India"},{"name":"DEF","address":"Australia"}]};";
var json_data = JSON.parse(json_string);
console.log(json_data);
res.render('sample_example', json_data);
var data1 = #{data1};
var data2 = #{data2};
var size = #{data3.length};
for data in #{data3}
var name = data.name;
var address = data.address;
如前所述,我能够正确地将#{data1}、#{data2}、#{data3.length}提取到变量中。但它打破了for循环。事实上,我能够从for循环外部提取#{data3[0].name}。但是在for looop中,它给出了声明的错误。这就是您现在可以做的 在服务器端,您必须
JSON.stringify
对象数组
var json_data = JSON.parse(json_string);
// Convert back to json only the property data3
json_data.data3 = JSON.stringify(json_data.data3);
res.render('simple', json_data);
或者更好的方法是不解析JSON,让它按原样运行:
// var json_data = JSON.parse(json_string);
res.render('simple', {
json_data: json_string
});
在翡翠模板中(如果您采用更好的方法):
您还需要更改循环结构。中..的用于迭代对象而不是对象数组。这对我很有用
var json_data = JSON.parse(json_string);
// Convert back to json only the property data3
json_data.data3 = JSON.stringify(json_data.data3);
res.render('simple', json_data);
- var cdata = {"data1":"data1","data2":"data2","data3":[{"name":"ABC","address":"India"},{"name":"DEF","address":"Australia"}]};
each data in cdata.data3
- var name = data.name;
- var address = data.address;
p Name: #{name}
p Address: #{address}
如果如上所示的代码更新不起作用,您可以共享实际的jade文件内容吗。还有什么版本的jade和express?它不起作用。我在脚本中使用这个。jade将其视为变量而不是html元素。我也按照建议做了尝试,得到了“Uncaught SyntaxError Unexpected token var”。@BKSingh您的JSON应该用”
单引号括起来,还要确保缩进正确。这就是我的html看起来像var data1=data1;var data2=data2;变量大小=2;对于[object object],[object object]中的数据,我仍然停留在这一点上。。是否有一种方法可以在单个语句中为每个语句设置多个。我现在以{“名称”:[“X”,“Y”],“地址”:[“印度”,“澳大利亚”]}的形式发送我的数据。我能够以“名称中的数据”或“添加中的数据”的形式对它们进行迭代。。。。但是我希望它们在一个循环中,而不是在data3-var name=data.name;-var地址=data.address代码>(没有data3
上的花括号)不适合你吗?不,不适合。我仍然会在chrome调试器的“uncaught syntax error…”行之后出现错误——“意外标识符”I get“>”。。不确定这是否是导致问题的原因