JSON数据不符合

时间:2017-08-23 00:07:37

标签: mysql json node.js express

我有一个评论和提交页面,我从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 &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
&#13;
&#13;
&#13;

1 个答案:

答案 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 }}