Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.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
Javascript 将值从客户端传输到服务器端节点js_Javascript_Node.js_Ajax_Pug - Fatal编程技术网

Javascript 将值从客户端传输到服务器端节点js

Javascript 将值从客户端传输到服务器端节点js,javascript,node.js,ajax,pug,Javascript,Node.js,Ajax,Pug,尝试了很多例子,花了很多时间,但都没有成功。如果有人能在这种情况下帮助我,那就太好了。所以,我想做的是从p#lessonText.lesson(style='margin-left:1%;'name='desc')#{item.description} 我需要将{item.description}传递到我的服务器端 这是我的客户代码 form#myForm() .container ul each item, index in items #allLess

尝试了很多例子,花了很多时间,但都没有成功。如果有人能在这种情况下帮助我,那就太好了。所以,我想做的是从
p#lessonText.lesson(style='margin-left:1%;'name='desc')#{item.description}
我需要将
{item.description}
传递到我的服务器端

这是我的客户代码

form#myForm()
  .container
    ul
      each item, index in items
        #allLessons.container
          .lessonsWrap
            h3.lesson #{index+1} . Lesson |
            p#lessonText.lesson(style='margin-left:1%;' name='desc') #{item.description}
            button#butPam.btn.btn-primary(type='submit') Begin
            .lesDescription
              p(style='margin-left:1%;') Lecturer: #{item.author}
              p(style='margin-left:1%;') Level: #{item.level}

              script.
                $('#myForm').on('submit', function(event){

                  var createVar = $('#lessonText').text();
                  alert(createVar);
                  $.ajax({
                    url: '/qVal',
                    method: 'post',
                    contentType: 'application/json',
                    data: JSON.stringify({desc: createVar.val()}),
                    async: true,
                    success: function(response){
                        console.log(response);

                    }
                  })

                });
现在在服务器端,我只想看看是否可以创建一个从客户端传递的变量

router.post('/qVal', function(req,res){
     console.log("server");
     var description = req.body.desc; 
     console.log(typeof(desc));
     console.log(desc);
});
也许我用错了方法,也许我应该用GET方法?
重要的是,我的router.post看起来不工作。当我编写console.log(“server”)时,控制台中没有出现“server”一词。

如果您使用错误的方法将数据前端发送到服务器,则在数据部分将JSON转换为字符串,但在服务器上,您会得到JSON值,这就是我看到的原因

var querystring = require('querystring');

router.post('/qVal', function(req,res){
     req.on('data',function(data){
          data = querystring.parse(data.toString('utf-8'));
          var description = data.desc; 
          console.log(typeof(desc));
          console.log(desc);
     });
}  
前端Ajax请求

$.ajax({
                    url: '/qVal',
                    method: 'post',
                    contentType: 'application/json',
                    data: {desc: createVar.val()},
                    async: true,
                    success: function(response){
                        console.log(response);
                    }
                  })
$.ajax({
         url: '/qVal',
         method: 'post',
         data: {
                    "desc": createVar.val()
                },
         async: true,
         success: function(response){
         console.log(response);
         }
      })
节点Js

router.post('/qVal', function(req,res){
     console.log("server");
     console.log(JSON.stringify(req.body));
     console.log(req.body.desc)
}

当您使用
JSON.stringify
时,需要将
JSON
解析为字符串(如果有


如果您要像这样添加
“desc”


客户端

$.ajax({
                    url: '/qVal',
                    method: 'post',
                    contentType: 'application/json',
                    data: {desc: createVar.val()},
                    async: true,
                    success: function(response){
                        console.log(response);
                    }
                  })
$.ajax({
         url: '/qVal',
         method: 'post',
         data: {
                    "desc": createVar.val()
                },
         async: true,
         success: function(response){
         console.log(response);
         }
      })


服务器

router.post('/qVal', function(req, res){
         console.log(JSON.stringify(req.body));
         console.log(req.body.desc)
}

它将以正确的方式发送到服务器。

您的
console.log(“服务器”)也是如此被解雇?不,它根本不检查浏览器的“网络”选项卡上的ajax调用是否被解雇,并检查请求中的URL。我猜/qVal路径和url可能有问题。有什么想法吗?createVar.val()语句无效,因为您已经在执行var createVar=$(“#lessonText”).text()。看起来router.post没有启动需要更多代码才能理解其他内容访问我的github repo看起来router.post没有启动。控制台并没有显示“服务器”做了你们所说的一切,但这是我得到的。看起来我从client得到了6个空值也许你传递空值,试着发送“desc”:“example”,如果它有效,那么你发送的是错误的badhmm,如果我写了一些随机的东西,例如,
data:{“desc”:“test”},
它有效,我在服务器端得到一个名为“test”的字符串。那么,也许你们知道我如何从任何标记传递值,比如h2,p或任何其他标记?所以这是一个不同的问题,将这个标记为已回答,然后问另一个问题@SimonDraymon