req.body.username не выводит правильное значение - PullRequest
0 голосов
/ 08 марта 2019

отправленные данные - http.send (JSON.stringify (data));

вывод данных -> {имя пользователя: "dsa", пароль: "dsa"}

вывод JSON.stringify (data) -> "{" username ":" dsa "," password ":" dsa "}"

вывод серверной части req.body ->
{'{"username": "dsa "," password ":" dsa "} ':' '}

вывод req.body.username -> undefined (ожидается" 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 + '/')),

Ответы [ 2 ]

1 голос
/ 08 марта 2019

если вы используете 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));

}
1 голос
/ 08 марта 2019

Вы структурировали свой объект 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 - Отправить запрос на сервер

и он говорит, что вы должны заразить отправить строка, так что это может быть просто плохой формат строки.

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». возможно, вам следует манипулировать строкой перед ее отправкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...