У меня есть форма с полем ввода и выбора для получения пользовательских данных. И я хочу отправить вызов ajax через обработчик кнопки отправки, чтобы сохранить пользовательские данные на сервере.
Вот скелет кода,
Сторона клиента:
xhr.open("POST", "/upload", true)
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
log('ajax succeed')
} else {
log('ajax failed')
}
}
}
console.log(data) // the data is not empty
xhr.send(data)
На стороне сервера:
import express from 'express'
import bodyParser from 'body-parser'
var app = express()
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: true }))
app.post('/upload', (req, res) => {
console.log(req.body) // get "{}"
res.send('greetings from Express!')
})
Вызов ajax достигает конечной точки сервера и может правильно отправить сообщение обратно клиенту, но почему я не могу получить эти данные формы из req.body
?
1 ответ
Похоже, вы не отправляете правильный формат тела для типа контента, который вы говорите серверу, поэтому он не может проанализировать данные.
Попробуйте это (на стороне клиента)
xhr.setRequestHeader('Content-type', 'application/json')
xhr.send(JSON.stringify(data))
Похожие вопросы
Новые вопросы
ajax
AJAX (асинхронный JavaScript и XML) — это метод создания интерактивных пользовательских интерфейсов веб-сайтов без традиционного обновления или перезагрузки веб-страницы. Он использует асинхронный обмен данными между клиентом и сервером, чтобы обновлять отображаемую информацию и беспрепятственно реагировать на взаимодействие с пользователем. Включите дополнительные теги для языков программирования, библиотек, фреймворков, веб-браузеров, протоколов и другой информации об окружающей среде.
data
?{ username, uploaded_file, selected_options }
data
- это настоящий объект JavaScript? Вы хотите отправить его какapplication/x-www-form-urlencoded
(что вы пытаетесь сделать в настоящее время) или как JSON?