Backend не получает данные из запроса xhr - PullRequest
1 голос
/ 23 апреля 2020

Я использую сервер express и хочу отправить данные из внешнего интерфейса на него с помощью XMLHttpRequest. Серверная часть выглядит следующим образом

const app = express()
const port = 3000
var bodyParser = require('body-parser')

// To parse json
app.use(bodyParser.json());


app.get('/',function(req,res){
    res.send('Hello World!')
})

app.post('/',function(req,res){
    res.send('This is a post request')
    console.log(req.body)
})

app.listen(port, function(){
    console.log(`Example app listening at http://localhost:${port}`)
})

, а внешний интерфейс выглядит следующим образом

    console.log(JSON.stringify(dataObject))
    let xhr = new XMLHttpRequest();
    xhr.open("POST","http://localhost:3000/");
    xhr.send(JSON.stringify(dataObject))
    xhr.onload = function(){
        alert(xhr.response);
    }
}

Я получаю пустой вывод скобки на консоли express. Пожалуйста, помогите

1 Ответ

1 голос
/ 23 апреля 2020

Простое изменение должно заставить ваш запрос работать, вам нужно установить заголовок content-type для вашего запроса, чтобы на сервере активировался парсер JSON, всего одна строка!

xhr.setRequestHeader('content-type', 'application/json');

И ваш клиентский код теперь выглядит примерно так:

let dataObject = { "foo": "bar" };
console.log(JSON.stringify(dataObject))
let xhr = new XMLHttpRequest();
xhr.open("POST","http://localhost:3000/");
xhr.setRequestHeader('content-type', 'application/json');
xhr.send(JSON.stringify(dataObject))
xhr.onload = function(){
    alert(xhr.response);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...