gpt4 book ai didi

javascript - Node.js req.body 空

转载 作者:行者123 更新时间:2023-12-02 14:54:15 25 4
gpt4 key购买 nike

我和这个人玩得很开心。我不知道为什么我的 node.js 响应是空的。如果我通过此处的 javascript 发送它,或者如果我使用高级 REST 客户端,它会返回 {}。这是我的代码:

client.js

unction ajaxPost(){

var req = new XMLHttpRequest();
var payload = {'Add Item':'Add Item',
'name':document.getElementById('submitForm').elements[0].value,
'reps':document.getElementById('submitForm').elements[1].value,
'weight':document.getElementById('submitForm').elements[2].value,
'date':document.getElementById('submitForm').elements[3].value,
'lbs':document.getElementById('submitForm').elements[4].value
}
payload['test'] = 'value!';
console.log('did this happen?');
console.log(payload['test']);
var url = '/edit';
req.open('POST', url, true);
req.setRequestHeader('Content-Type', 'application/json');
req.addEventListener('load',function(){
if(req.status >= 200 && req.status < 400){
var response = JSON.parse(req.responseText);
console.log('you got a response!')

} else {
console.log("Error in network request: " + req.statusText);
}});
console.log(JSON.stringify(payload));
req.send(JSON.stringify(payload));

event.preventDefault();

}

HTML

<form id = "submitForm">
<input type="text" name="name" id="name" value='test'>Name<br>
<input type="text" name="reps" id="reps" value='10'>Reps<br>
<input type="text" name="weight" id="weight" value='100'>Weight<br>
<input type="text" name="date" id="date" value='1/1/16'>Date<br>
<input type="text" name="lbs" id="lbs" value='1'>Pounds<br>
<input type="submit" onclick = 'ajaxPost()' value="Add Item">
</form>

服务器

var express = require('express');
var mysql = require('./dbcon.js');
var bodyParser = require('body-parser');

var app = express();
var handlebars = require('express-handlebars').create({defaultLayout:'main2'});

app.use(express.static(__dirname + '/public'));
app.use(bodyParser.urlencoded({ extended: false }));
app.engine('handlebars', handlebars.engine);
app.set('view engine', 'handlebars');
app.set('port', 3010);

app.post('/edit',function(req,res,next){
//var context = {};
console.log('you posted!');
console.log(req.body);

在我的控制台中,我看到 req.body 是 {}。

我不知道我做错了什么。我尝试过使用httpbin,我可以看到javascript工作正常,这意味着我可能在 Node 端做错了什么,但我不知道是什么。如果我在表单上使用 method="submit",那么帖子会顺利进行,但这不是我想要做的。我究竟做错了什么??因为高级 REST 客户端也失败,我猜测它是 Node ?

最佳答案

您在请求中发送 json,但您只有中间件设置来处理 url 编码的请求。将其添加到您的中间件中,json 请求应填充在 req.body 中。

app.use(bodyParser.json());

更多信息可以在主体解析器中找到 documentation 。具体来说,您会注意到 middleware you are using urlencoded 声明它只解析 urlencoded 主体(这是使用 Content-Type 的地方)。

关于javascript - Node.js req.body 空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35948460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com