Книга: Выразительный JavaScript
Обновление сервера
Обновление сервера
Обработчики событий, зарегистрированные в drawTalk
, вызывают функции deleteTalk
и addComment
непосредственно для действий, необходимых для удаления темы или добавления комментария. Это будет нужно для построения URL, которые ссылаются на темы с заданным именем, для которых мы определяем вспомогательную функцию talkURL
.
function talkURL(title) {
return "talks/" + encodeURIComponent(title);
}
Функция deleteTalk запускает запрос DELETE и сообщает об ошибке в случае неудачи.
function deleteTalk(title) {
request({pathname: talkURL(title), method: "DELETE"},
reportError);
}
Для добавления комментария нужно построить его представление в формате JSON и отправить его как часть POST
-запроса.
function addComment(title, comment) {
var comment = {author: nameField.value, message: comment};
request({pathname: talkURL(title) + "/comments",
body: JSON.stringify(comment),
method: "POST"},
reportError);
}
Переменная nameField
, используемая для установки свойства комментария author
, ссылается на поле <input>
вверху страницы, которое позволяет пользователю задать его имя. Мы также подключаем это поле к localStorage
, чтобы его не приходилось заполнять каждый раз при перезагрузке страницы.
var nameField = document.querySelector("#name");
nameField.value = localStorage.getItem("name") || "";
nameField.addEventListener("change", function() {
localStorage.setItem("name", nameField.value);
});
Форма внизу страницы для создания новой темы получает обработчик событий "submit". Этот обработчик запрещает действие по умолчанию (что привело бы к перезагрузке страницы), очищает форму и запускает PUT-запрос для создания темы.
var talkForm = document.querySelector("#newtalk");
talkForm.addEventListener("submit", function(event) {
event.preventDefault();
request({pathname: talkURL(talkForm.elements.title.value),
method: "PUT",
body: JSON.stringify({
presenter: nameField.value,
summary: talkForm.elements.summary.value
})}, reportError);
talkForm.reset();
});
- Часть III: Обновление своего «заг»
- 10.1. Настройка сервера DNS
- Запуск InterBase-сервера
- Расширенная установка InterBase-сервера
- Статистика InterBase-сервера
- Минимальный состав сервера InterBase SuperServer
- Отличительные особенности сервера Yaffil
- Ускоренное обновление данных
- Использование сервера Yaffil внутри процесса
- Одновременный запуск нескольких копий сервера (multi-instancing)
- Мониторинг состояния сервера
- 9.2. Работа прокси-сервера