我有一个评论和提交页面,我从mysql获取数据,将其作为JSON发送到我的把手页面,在那里我解析并显示它。
但是,当我在我的脚本代码中插入{{data1}}时,它显示为
{"id":"32","position":"qweqweq","date":"sadasd&q
我不能解析它,因为所有"现在是& quot。
然而,如果我只是将其作为{{data1}}
直接插入手柄页面,它会显示为完美的JSON [{"id":"32","position":"qweqweq","date":"sadasd","howUhear":"advertisement"
.....
请指导我朝正确的方向前进,谢谢。
我的index.js
router.get('/jobappsum', authenticationMiddleware(), function(req, res){
const db = require('../db.js');
const userIDpre = (`req.session.passport.user: ${JSON.stringify(req.session.passport)}`);
var userID = userIDpre.match(/\d+/)[0];
db.query("SELECT * FROM Page1 WHERE id = '"+ userID +"'", function(err, results1, field){
console.log(results1);
sum1 = JSON.stringify(results1);
db.query("SELECT * FROM Page2 WHERE id = '"+ userID +"'", function(err, results2, field){
sum2 = results2;
db.query("SELECT * FROM Page3 WHERE id = '"+ userID +"'", function(err, results3, field){
sum3 = results3;
}) res.render('jobappsum', {
data1: sum1,
data2: sum2,
data3: sum3
});
;
});
});
});

jobappsum.hbs
{{> header }}
<p id="demo"></p>
<script>
var obj = JSON.parse({{data1}});
//{{data1}} " shows up up as " and gives me error
obj = obj[0];
document.getElementById("demo").innerHTML = obj.id + ", " + obj.position;
</script>
{{result}}
//will show up as the correct JSON
&#13;
答案 0 :(得分:0)
您的代码:
res.render('jobappsum', {
您的“jobappsum”用于输出HTML,因此它会对您的报价进行编码。正如您所见,它会转换为“&amp;”。当您在视图中显示它时,您会看到“正常,但它不是”字符本身。它是&amp; quot;并显示为“在浏览器中。” / p>
因此,您应该使用不会转义HTML的渲染器。
如果您不想在视图中转义输出中的某些内容,请尝试:
!{data1}
或
{{{data1}}}
在视图中。
或者您可以使用decodeURI()函数在解析之前解除转义的JSON:
var obj = JSON.parse(decodeURI("{{data1}}"));
如果使用Swig.js,您可以使用:
{{ data1|json|raw }}