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