已发送数据- http.send(JSON.stringify(data));
输出数据-> {用户名:“ dsa”,密码:“ dsa”}
输出JSON.stringify(data)-> “ {”用户名“:” dsa“,”密码“:” dsa“}”
输出需求主体服务器端->
{'{“用户名”:“ dsa”,“密码”:“ dsa”}':''}
输出req.body.username-> 未定义(预期为“ dsa”)
Body解析器已安装并与应用程序一起使用。
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 + '/')),
答案 0 :(得分:1)
您对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”语法。也许您应该在发送字符串之前对其进行操作。
答案 1 :(得分:1)
如果您使用JSON.stringify,则需要类似“ application / json”的内容
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/json')
http.send(JSON.stringify(data));
}