我使用 node js 后端和 express-handlebars 作为前端模板。我正在从我的 mysql 数据库中获取 json 文件并将其发送到我的dashboard.hbs 文件。问题是 json 将进入浏览器,只要从 html 访问它,它就会显示所有内容,但在脚本内部它会发疯。任何人都可以告诉我我做错了什么我已经浏览了很多网站以及这个和这个。这些都不起作用。我还在我的 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 用于 express-handlebars 如果它这样做然后我得到以下 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,它显示得很完美,但是当我从我的脚本中打印时,它会发疯。谁能帮我吗??
这很奇怪,但我找到了我自己问题的答案。也许它会帮助一些和我掉进同一个坑的人。因此,在 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});
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句