gpt4 book ai didi

mysql - JSON 数据没有表现

转载 作者:行者123 更新时间:2023-11-29 18:29:33 24 4
gpt4 key购买 nike

我有一个审查和提交页面,我从 mysql 获取数据,将其作为 JSON 发送到我的 Handlebars 页面,我在其中解析并显示它。

但是,当我将 {{data1}} 插入脚本标记时,它显示为

{"id":"32","position":"qweqweq","date":"sadasd&q

我无法再解析它,因为所有的“现在都是”。

但是,如果我直接将其作为 {{data1}} 插入 Handlebars 页面,它会显示为完美的 JSON

[{"id":"32","position":"qweqweq","date":"sadasd","howUhear":"广告".....

请帮助引导我走向正确的方向,谢谢。

我的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 &quot and gives me error
obj = obj[0];


document.getElementById("demo").innerHTML = obj.id + ", " + obj.position;


</script>


{{result}}

//will show up as the correct JSON

最佳答案

您的代码:

res.render('jobappsum', { 

您的“jobappsum”旨在输出 HTML,因此它会对您的报价进行编码。如您所见,它将 "转换为 " ;。当您在 View 中显示它时,您会正常看到 ",但它不是 "字符本身。它是 " ; 并且在浏览器中显示为 "。

因此,您应该使用不会进行 HTML 转义的渲染器。

如果您不希望输出中的某些内容在您的 View 中转义,请尝试:

!{data1}

{{{data1}}}

在 View 内。

或者您可以在解析之前使用decodeURI()函数对转义的JSON进行转义:

var obj = JSON.parse(decodeURI("{{data1}}")); 
<小时/>

如果使用 Swig.js,您可以使用:

{{ data1|json|raw }}

关于mysql - JSON 数据没有表现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45828669/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com