CNode

jade模板的script中怎么取到后台传来的json变量

Yyakczh发布于13 年前最后回复10 年前11 回复19559 浏览0 收藏

后台

res.render('user', { 
            title: 'Example',
            message: '',
            data:data,
            errors: errors
        });

模板

    script(src="javascripts/form.js")
    script
   console.log(data);

firebug提示ReferenceError: data is not defined

https://github.com/visionmedia/jade 上面可以传到页面里面,但怎么在js里面引用变量呢

查看回复

回复 (10)

B
banther#1·13 年前

先放到隐藏域中,在取出来不行吗

Y
yakczh#2·13 年前

还要在页面搞个中转站?

H
heroicyang#3·13 年前

和html里面一样。

script
  console.log(#{data});

但是如果你的data是个对象的话,在后端先JSON.stringify(data)吧。然后前端再parse回来。

P
paul-123#4·11 年前

我按你的方式写会报错呀

M
magicdawn#5·11 年前
P
pauky#6·11 年前
script.
  var data =  !{JSON.stringify(data)};
P
paul-123#7·11 年前

script console.log()直接这么输出就会报错,什么原因呢

D
DevinXian#8·11 年前

JSON.stringify(data)把对象序列化,放在隐藏域或者直接放在脚本中,然后parse回来,剩下的就是细节问题了~

W
weierbufan#9·10 年前

在jade的js部分直接声明变量就可以了,例如: var gameId = '#{gameId}'; console.log(gameId); 这样gameId就可以在js中直接使用了。。。。

N
Naiba01#10·10 年前
引用 heroicyang和html里面一样。 但是如果你的data是个对象的话,在后端先JSON.stringify(data)吧。然后前端再parse`回来。

@heroicyang 如果data是一个对象,应该是后台JSON.stringify(data),前台使用!{data}就获取到该对象了,不需要再JSON.parse

参与回复
登录后即可参与回复。登录