我使用了一个node js后端和express-handlebar作为前端的模板。我正在从mysql数据库中获取json文件并将其发送到我的dashboard.hbs文件。问题是,json会进入浏览器,只要从html访问它,它就会显示所有内容,但在脚本内部,它就会变得疯狂。有人能告诉我我做错了什么吗?我已经浏览了很多网站,还有this和this。这些都不起作用。我也在我的hbs中使用register helper来串化json,但它仍然显示出奇怪的转换后的json。下面是我的代码
exports.dashboard = function (req, res) {
//var dashboards=dashboardModel.findAll({ include: [{ all: true }]});
var dasboard = null;
dashboardModel.findAll().then(dasboards => {
dasboard = dasboards;
if (dasboard.length > 0)
console.log(dasboard[9].monster);
else
console.log('no dashboard');
var jsss=JSON.parse(dasboard[9].monster);
var st=JSON.stringify(jsss);
console.log(st);
res.render('dashboard', {
dasboard: dasboard,
js:jsss
});
})
}
这就是我的模板
<!DOCTYPE html>
<html>
<head>
<title>FaceMask API</title>
</head>
<body>
<h2>The list of Monsters</h2>
{{#if dasboard}}
<table>
<tr>
<th>PRODUCT ID</th>
<th>GIF_ID</th>
<th>GIF_TITLE</th>
<th>PRICE</th>
<th>Monster </th>
<th>GIF_PACK</th>
</tr>
{{#each dasboard}}
<tr onclick="gotoEditDashboard('{{this.id}}')">
<td>{{this.product_id}}</td>
<td>{{this.gif_id}}</td>
<td>{{this.gif_titile}}</td>
<td>{{this.price}}</td>
<td>{{this.monster}}</td>
<td>{{this.gif_pack}}</td>
</tr>
{{/each}}
</table>
{{else}}
<p> No Data Available {{dasboard}}</p>
{{/if}}
<script src="javascripts/dashboard.js"></script>
<script type="text/javascript">
var j="{{{ js}}}";
//var jsss=JSON.parse(j);
console.log(j[2].toString());
//console.log("asd: "+jsss[0].fileName);
</script>
</body>
</html>
我把json打印在我的服务器上,就像
[{"fileName":"blob_1527417588127.jpg","fileLink":"localhost:3000/img/blob_1527417588127.jpg"},{"fileName":"blob_1527417588127.jpg","fileLink":"localhost:3000/img/blob_1527417588127.jpg"}]
但在浏览器中,我只得到一个对象,如果我试图将其解析为json或尝试直接使用它,则会发生错误。我已经说过,我尝试过使用registerHelper作为快捷车把手,如果它能做到,我就会关注json。
[{"fileName":"blob_1527417588127.jpg","fileLink":"localhost:3000/img/blob_1527417588127.jpg"},{"fileName":"blob_1527417588127.jpg","fileLink":"localhost:3000/img/blob_1527417588127.jpg"}]
奇怪的是在html部分,我也打印了怪物json,它完美地显示了,但是当我从我的脚本打印时,它变得疯狂了。有人能帮我吗??
发布于 2018-06-04 03:15:38
这很奇怪,但我找到了我自己问题的答案。也许这会帮助一些和我一样掉进坑里的人。因此,在html文件内部的脚本中,您可以编写以下代码来解码json对象的数组
{{#each js}}
var obj = {};
{{#each this}}
obj.{{@key}} = '{{this}}';
{{/each}}
m.push(obj);
{{/each}}
这就是你在服务器上写的。
var k=[];
var s={
"a":"as",
"b": "ee"
};
var s1={
"a":"ast",
"b": "eet"
};
k.push(s);
k.push(s1);
app.get('/', function(req, res){
res.render('index', {js:k});
});
https://stackoverflow.com/questions/50584250
复制相似问题