Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在JADE中访问jQuery对象_Node.js_Haml_Express_Pug - Fatal编程技术网

Node.js 在JADE中访问jQuery对象

Node.js 在JADE中访问jQuery对象,node.js,haml,express,pug,Node.js,Haml,Express,Pug,在登录期间,我将userId保存在jQuery cookie中,以便我可以通过$.cookie'userId'访问它 现在我正试图从Jade处获取它 - if ($.cookie('userId') === userId) 我犯了一个错误 未定义$ 我如何访问cookie 我的代码: - if (($.cookie('userId')) === userId) input(type='submit'

在登录期间,我将userId保存在jQuery cookie中,以便我可以通过$.cookie'userId'访问它

现在我正试图从Jade处获取它

- if ($.cookie('userId') === userId)
我犯了一个错误

未定义$

我如何访问cookie

我的代码:

- if (($.cookie('userId')) === userId)
                                                input(type='submit', value='Move')
                                            else
                                                input(type='submit', disabled, value='Move'')

你似乎误解了概念。让我给你讲讲

基础知识。Cookie存储在客户端。因此,在客户端运行此脚本时,使用jQuery$.cookie'userId'将检索它

但这里您在服务器端使用JADE模板引擎。所以你甚至还没有将页面发送到客户端。那么,您想要检索什么cookie呢?没有cookie,因为您在服务器上

还有更多。运行$.cookie'userId'会抛出错误,因为您位于服务器端。没有$object。这是不可能的,因为您不能在服务器端很好地使用jQuery,实际上您可以,但这在目前是无关紧要的。是否在路线系统中定义了$object?还是定义了helper$?我不这么认为

快速+翡翠教程。现在让我给你一个简短的教程。假设你在app.js中有一个视图

现在在index.jade中,您可以使用代码作为变量。因此,您可以编写index.jade,例如:

// some code
- if (code == 500)
    input(type='submit', disabledm, value='Move')
- else
    input(type='submit', value='Move')
// some code
现在它会起作用的!若预定义了JavaScript函数,也可以在模板中使用它们。例如,在你的app.js中

然后在index.jade模板中可以使用

- if (positive(-13))
    input(type="submit")
甚至将这两个概念结合起来

- if (positive(code))
    // do some stuff
要曲奇还是不要曲奇。如果您真的需要使用cookie,并且除了会话或CSRF之外不应该使用cookie,那么您需要使用客户端JavaScript。这意味着您需要在jQuery之后添加

script(src='my-path/my-script.js')
转到index.jade文件,然后像这样编写my-script.js

$(document).ready(function() {
  if ($.cookie('userId') == userId) {
    // do something like append input to some holder
  }
});
但这种解决方案存在几个问题。第一:什么是用户ID平等的第二部分?您需要在index.jade中预定义它。例如使用

script
    var userId = #{ user.id };
以及在路由中添加用户对象。第二:cookies是局部变量。设置它们需要额外的服务器代码,这是我不希望看到的。这使得维护应用程序变得更加困难。最后:将用户id存储在cookie中似乎毫无意义。最终用户甚至不必知道自己的id。服务器需要知道!会话系统在这里很方便


最后一点。您编写的代码告诉我们,您无法区分服务器端和客户端JavaScript。解决你的问题的办法是学习,学习,再学习。阅读有关JADE、Express和Node.js的教程和所有内容。

您似乎误解了这些概念。让我给你讲讲

基础知识。Cookie存储在客户端。因此,在客户端运行此脚本时,使用jQuery$.cookie'userId'将检索它

但这里您在服务器端使用JADE模板引擎。所以你甚至还没有将页面发送到客户端。那么,您想要检索什么cookie呢?没有cookie,因为您在服务器上

还有更多。运行$.cookie'userId'会抛出错误,因为您位于服务器端。没有$object。这是不可能的,因为您不能在服务器端很好地使用jQuery,实际上您可以,但这在目前是无关紧要的。是否在路线系统中定义了$object?还是定义了helper$?我不这么认为

快速+翡翠教程。现在让我给你一个简短的教程。假设你在app.js中有一个视图

现在在index.jade中,您可以使用代码作为变量。因此,您可以编写index.jade,例如:

// some code
- if (code == 500)
    input(type='submit', disabledm, value='Move')
- else
    input(type='submit', value='Move')
// some code
现在它会起作用的!若预定义了JavaScript函数,也可以在模板中使用它们。例如,在你的app.js中

然后在index.jade模板中可以使用

- if (positive(-13))
    input(type="submit")
甚至将这两个概念结合起来

- if (positive(code))
    // do some stuff
要曲奇还是不要曲奇。如果您真的需要使用cookie,并且除了会话或CSRF之外不应该使用cookie,那么您需要使用客户端JavaScript。这意味着您需要在jQuery之后添加

script(src='my-path/my-script.js')
转到index.jade文件,然后像这样编写my-script.js

$(document).ready(function() {
  if ($.cookie('userId') == userId) {
    // do something like append input to some holder
  }
});
但这种解决方案存在几个问题。第一:什么是用户ID平等的第二部分?您需要在index.jade中预定义它。例如使用

script
    var userId = #{ user.id };
以及在路由中添加用户对象。第二:cookies是局部变量。设置它们需要额外的服务器代码,这是我不希望看到的。这使得维护应用程序变得更加困难。最后:将用户id存储在cookie中似乎毫无意义。最终用户甚至不必知道自己的id。服务器需要知道!会话系统在这里很方便


最后一点。您编写的代码告诉我们,您无法区分服务器端和客户端JavaScript。解决你的问题的办法是学习,学习,再学习。阅读有关JADE、Express和Node.js的教程和所有内容。

freakish所说的是正确的。您正在尝试服务器端和客户端。 如果设置了cookie,您应该能够像这样在服务器上访问它

app.use(express.cookieParser());

app.get('/', function(req, res){
   // index is jade template
   // local variable on jade template holds cookie value
   // use req.cookies.userid
   res.render('index', { userid: req.cookies.userid });

});
“怪物”说的是对的。您正在尝试服务器端和客户端。 如果设置了cookie,您应该能够像这样在服务器上访问它

app.use(express.cookieParser());

app.get('/', function(req, res){
   // index is jade template
   // local variable on jade template holds cookie value
   // use req.cookies.userid
   res.render('index', { userid: req.cookies.userid });

});

谢谢你提到的所有要点。你说得很对,我把客户端和服务器端搞砸了。。。这是根本问题。谢谢你指出这一点。。。伟大的谢谢你提到的所有要点。你说得很对,我把客户端和服务器端搞砸了。。。这是根本问题。谢谢你指出这一点。。。伟大的感谢您提供req.cookies.userid。将在适当的时候尝试。感谢req.cookies.userid。我会在适当的时候尝试。