Запрос POST посылает пустой req.body
Отправляю значения в формате JSON с помощью jQuery запросом AJAX. Запрос GET работает корректно, в то же время когда POST посылает пустой req (req.body = undefined). В чем может быть проблема?
Отправка запроса:
$.post("http://localhost:8080/api/set", {
"myData": numbers,
"asc": "true"
}, function(data, status){
alert("Данные: " + JSON.stringify(data) + "\nСостояние: " + status);
});
$.get("http://localhost:8080/api/get", function(data, status){
alert("Data: " + JSON.stringify(data) + "\nStatus: " + status);
});
Создание сервера:
require('dotenv').config()
const express = require('express')
const { error } = require('console')
const PORT= process.env.PORT || 8080
const cors = require('cors')
const router = require('./routes/index')
const app = express()
app.use(cors())
app.options('*', cors());
app.use(express.json())
app.use('/api', router)
const start = async () => {
try {
app.listen(PORT, () => console.log(`Server started on port ${PORT}`))
} catch (e) {
console.log(e)
}
}
start()
Получение запросов:
const express = require('express')
const router = express.Router();
const fs= require('fs')
const _ = require('lodash');
const $ = require('jquery');
router.post('/set', (req, res)=>{
const {myData, asc} = req.body
console.log(myData);
let clone = myData.slice(0)
let sortedArr = [];
for(let i = 0; i < 8; i++){
let arr = [];
let index = i;
for(let j = 0; j < 10; j++){
arr[j] = clone[index];
index += 8;
}
arr.sort(function(a, b) {
return asc === 'true' ? a - b : b - a;
});
sortedArr[i] = arr;
}
let arr = [];
let index = 0;
for(let i = 0; i < 10; i++) {
for (let j = 0; j < 8; j++) {
arr[index++] = sortedArr[j][i];
}
}
fs.mkdir('./files', ()=>{
fs.writeFile('./files/didntSorted.txt', myData.join(', '), (error)=>{
error? console.log(error): null;
})
fs.writeFile('./files/sorted.txt', arr.join(', '), (error)=>{
error? console.log(error): null;
})
})
let obj={
myData: myData,
clone: arr
}
return res.json(obj)
})
router.get('/get', (req, res)=>{
console.log('get');
let obj = {}
fs.mkdir('./files', ()=>{
if(fs.existsSync('./files/didntSorted.txt')){
obj.didntSorted = fs.readFileSync('./files/didntSorted.txt','utf8')
}
else obj.didntSorted = ''
if(fs.existsSync('./files/sorted.txt')){
obj.sorted = fs.readFileSync('./files/sorted.txt','utf8')
}
else obj.sorted = ''
return res.json(obj)
})
})
module.exports = router
Источник: Stack Overflow на русском