Задать вопрос
noder_ss
@noder_ss
Линуксоид-энтузиаст и SQL разработчик

Почему не работает ajax запрос?

Пишу сайт с записыванием комментариев в бд и не получается сделать 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"
}
  • Вопрос задан
  • 162 просмотра
Подписаться 1 Простой 14 комментариев
Решения вопроса 1
@kaka888
C, C++, Qt, Python Flask, MySQL, Lua
Ошибка в названии события: form.addEventListener("sumbit", function(event){.
sumbit -> submit.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Возможно решит проблему:
xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы