发送的数据-
http.send(JSON.stringify(data));
输出数据-> {用户名:“ dsa”,密码:“ dsa”}
输出JSON.stringify(data)->
“ {”用户名“:” dsa“,”密码“:” dsa“}”
输出req.body服务器端->
{'{“用户名”:“ dsa”,“密码”:“ dsa”}':''}
输出req.body.username->
未定义(期望“ DSA”)
正文解析器已安装并与应用程序一起使用。
Javascript:
server.register = function(){
console.log('ran func');
usernameinput = document.getElementById("registerform").elements["username"].value
passwordinput = document.getElementById("registerform").elements["password"].value
var data = {
"username":usernameinput,
"password":passwordinput
}
http.open("post", server.regurl,true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.send(JSON.stringify(data));
}
服务器设置代码包含以下内容:
const bodyParser = require('body-parser')
var app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }))
app.use(express.static(__dirname + '/')),
最佳答案
您已对JSON对象进行了字符串化处理,因此可以真正在服务器端获取其键-它是一个纯字符串。
您可以按原样发送(一个JSON对象)sent data - http.send(data);
要么sent data - http.send({payload: JSON.stringify(data)});
然后在服务器端
var x = JSON.parse(req.body.payload)
x.username;
答案更新:
看了一点之后。
AJAX - Send a Request To a Server
它说你应该事实上发送
字符串,因此它可能只是错误的字符串格式。
xhttp.open("POST", "demo_post2.asp", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("fname=Henry&lname=Ford");
但JSON.stringify不会为您提供这种“ URLish”语法。也许您应该在发送字符串之前对其进行操作。
关于javascript - req.body.username没有输出正确的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55067786/