Итак, это приложение To-do, которое работает, записывая элемент в поле ввода и сохраняя его array
объекта, а затем используя EJS
для отображения данных.
Я использовал AJAX
запрос (используя XHR
) к URL и прочему, но кажется, что он вообще не работает, на самом деле я провел несколько тестов и похоже, что вся функция события submit не ' Это не сработало, но даже тогда я попытался использовать JSON.stringify
и JSON.parse
, но это дало мне ошибку, равную "an expected token 0 at position 0"
Что не так? Я использую Express.js
для рендеринга сервера, EJS
в качестве механизма просмотра и Javascript для отправки запросов.
Настройка сервера (отдельный модуль, позже приложение будет модулем express
):
let items = [];
let bodyparser = require("body-parser");
let urlencoded = bodyparser.urlencoded({ extended: false });
module.exports = function(app) {
app.get("/todo", function(req, res) {
res.render("toDo", { data: items });
});
app.post("/todo", urlencoded, function(req, res) {
items.push(req.body);
});
app.delete("/todo:item", function(req, res) {});
};
HTML-файл (с использованием EJS):
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>To-do Application</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" media="screen" href="../Public/Assets/Styles.css" />
<script src="../Public/Scripts/Add.js" defer></script>
</head>
<body>
<div id="todo-table">
<form action="/todo" method="post">
<input type="text" placeholder="Write an item here" required>
<button type="submit" id="Add" onsubmit="return false">Add</button>
</form>
<ul>
<% data.forEach(function(element){ %>
<li> <%= element.item %> </li>
<% }) %>
</ul>
</div>
</body>
</html>
Файл Javascript для отправки запросов AJAX:
let form = document.querySelector("form");
let request = new XMLHttpRequest();
request.open("POST", "/todo");
let valueToAdd = document.querySelector("input").value;
let readyValue = { item: valueToAdd };
form.addEventListener("submit", function() {
request.onreadystatechange = function() {
if (request.readyState == 4 && request.status == 200) {
request.send(readyValue);
console.log("Yaay succeeded");
}
};
});
Всякий раз, когда я запускаю его, он просто не работает вообще, он не добавляет объект item в массив, страница продолжает загружаться и загружаться, когда я нажимаю кнопку отправки, и ничего не отображается в разделе Network инструментов Dev. Кажется, это не работает вообще. Черт, даже console.log
из "Yaay succeeded"
не отображается, что означает, что оно как-то связано с этой функцией, но я просто не могу понять это.
Также, когда я делаю console.log(req.body)
, он показывает пустой объект, что снова означает, что проблема в этой функции, похоже, что он не отправляет данные или что-то еще. Любая помощь?