Пишу сайт с записыванием комментариев в бд и не получается сделать xhr запрос на сервер, написанный на node.js:
Сервер:
import http from "http"
import mysql from 'mysql2'
const conn = mysql.createConnection({
host: "localhost",
user: "root",
password: "root",
database: "coms"
})
const server = http.createServer(function (request, response) {
response.setHeader("Access-Control-Allow-Origin", "*")
if(request.url == "/add" && request.method == "POST"){
addCom(request,response)
}
else{
response.writeHead(404, "Not found")
response.end(JSON.stringify({
"status":"page not found"
}))
}
})
server.listen(3000)
function addCom(request, response){
let data = ""
request.on("data", function(chunk){
data += chunk
})
request.on("end", function(){
let user = JSON.parse(data)
response.writeHead(200, "Success")
response.end(JSON.stringify({
"status":`Success`
}))
})
}
HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form method="POST" id="form">
<input type="text" name="name" placeholder="Your name..." style="font-family:Arial; " class="name">
<input type="text" name="content" placeholder="Your message..."style="font-family:Arial; " class="content">
<button type="sumbit">SEND</button>
</form>
<h1 class="info"></h1>
</body>
<script>
let form = document.querySelector("#form")
let name = document.querySelector(".name")
let content = document.querySelector(".content")
form.addEventListener("sumbit", function(event){
event.preventDefault()
let sent = {
"name": name.value,
"content": content.value
}
let xhr = new XMLHttpRequest();
xhr.open("POST", "http://localhost:3000/add");
xhr.responseType = "json"
xhr.send(JSON.stringify(sent))
xhr.onload = function(){
let info = document.querySelector(".info")
info.innerHTML = ""
if(xhr.status === 200){
window.open("login.html", "_self")
}
else{
info.innerText = xhr.response.status
}
}
})
</script>
</html>
Через Insomnia и браузер все работает корректно и возвращает ответ. По этому подозреваю, что проблема в самом запросе, но найти не могу.
{
"status": "Success"
}