#javascript #node.js #json #post #xmlhttprequest
Вопрос:
Я довольно новичок в JS и Nodejs, и я застрял на 3 дня, пытаясь достичь этого ==>
Отправьте тело jsonstringified на сервер через:
<!DOCTYPE html>
<html>
<head>
<title>
JavaScript | Sending JSON data to server.
</title>
</head>
<body style="text-align:center;" id="body">
<h1 style="color:green;">
Post Product
</h1>
<p>
<form action='/' method="POST">
<input type="text" id="name" placeholder="Product Name">
<input type="text" id="price" placeholder="Price">
<button id="btn">Send JSON</button>
<p class="result" style="color:rgb(6, 177, 6)"></p>
</form>
<script>
let button = document.querySelector("#btn");
button.addEventListener("click", sendJSON, true);
function sendJSON() {
let name = document.querySelector("#name");
let price = document.querySelector("#price");
let url = "localhost:4000";
let xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if (xhr.readyState === 4 amp;amp; xhr.status === 201) {
result.innerHTML = this.responseText;
}
};
const json = [{name: name, price: price}];
xhr.open('POST', url, true);
xhr.setRequestHeader('content-type', 'application/json');
alert(xhr)
xhr.send(JSON.stringify(json));
}
</script>
</p>
</body>
</html>
И получение данных на стороне сервера через:
const express = require('express')
const routes = require('./routes/routes');
const cors = require('cors')
const server = express()
server.use(express.json())
server.use(cors())
server.set('view engine', 'ejs')
server.set("views",__dirname "/views")
server.listen(4000, function() {
console.log('http server on 4000 port')
});
server.post('/', function(req,res) {
console.log(req);
console.log(req.params)
console.log(req.body)
});
server.get('/', function(req, res) {
var path = require('path');
res.sendFile(path.resolve('index.html'));
});
Но все, что я получаю от консоли(req.body) и консоли (req.params), это {} {}, я все еще не знаю, отправляется ли json и не получен или даже не отправляется. Я уже перепробовал кучу советов о cors и jsonparsing на стороне сервера, но ничего из этого, похоже, не работает. Я был бы рад любым предложениям о том, как это сделать, и еще лучше знаю проблему, стоящую за тем, что я делаю неправильно. Большое спасибо.
Комментарии:
1. Проверьте вкладку сеть в инструментах разработчика Chrome. Отправляют ли тело?
2. @ArielAlvarado в нем указано состояние: (ожидание) и 1 ошибка «Не удалось загрузить ресурс, сервер ответил 404 не найден».