发送的数据-
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/

10-11 11:42