Я работаю над приложением CRUD, используя webpack в качестве сборщика модулей и json: server в качестве моделируемого бэкэнда. Все остальные операции работают отлично, но обновление заполняет поля как undefined. Итак, если пост выглядит следующим образом...
Post 1
content for post 1
Если я попытаюсь отредактировать его, он будет отображаться буквально как это...
Undefined
Undefined
Я не уверен, где я ошибаюсь, но я думаю, что это вопрос масштаба. Я либо неправильно ссылаюсь на что-то, либо мне нужно переосмыслить набор фигурных скобок. По крайней мере, я так думаю.
В моем файле http.js запрос на размещение находится в классе HTTP вместе со всеми остальными (отправить, поместить, удалить, получить)
...
// Make an HTTP PUT Request
async put(url, data) {
const response = await fetch(url, {
method: 'PUT',
headers: {
'Content-type': 'application.json'
},
body: JSON.stringify(data)
});
const resData = await response.json();
return resData;
}
...
Приведенный выше код экспортируется в файл app.js, который обрабатывает функцию отправки сообщения.
...
function submitPost() {
const title = document.querySelector('#title').value;
const body = document.querySelector('#body').value;
const id = document.querySelector('#id').value;
const data = {
title,
body
}
// Validate input
if (title === '' || body === '') {
ui.showAlert('Please fill in all fields', 'alert alert-danger');
} else {
// Check for ID
if (id === '') {
// Create Post
http.post('http://localhost:3000/posts', data)
.then(data => {
ui.showAlert('Post added', 'alert alert-success');
ui.clearFields();
getPosts();
})
.catch(err => console.info(err));
} else {
// Update Post
http.put(`http://localhost:3000/posts/${ id }`, data)
.then(data => {
ui.showAlert('Post updated', 'alert alert-success');
ui.changeFormState('add');
getPosts();
})
.catch(err => console.info(err));
}
}
}
...
Насколько я вижу, функции пользовательского интерфейса, импортированные из модуля пользовательского интерфейса, работают правильно. getPosts тоже работает, но если необходимо увидеть его или файл HTML, я буду рад предоставить его. Любая помощь будет принята с благодарностью.
Обновлено:
Обновленный файл json отображается так. Сообщение с идентификатором 2 когда-то имело такой же контент, как и сообщение после него.
...
"posts": [
{
"id": 2
},
{
"id": 3,
"title": "Post Three",
"body": "This is post three."
},
...
Это была ошибка. Я привык создавать такие фреймворки, как React и Django, где я уведомляюсь о таких ошибках и могу отследить их до источника проблемы. При создании этого приложения я надеюсь избавиться от своей зависимости от них. Часть обновлений CRUD была моей особой слабостью в течение некоторого времени, и я надеялся, что кто-нибудь может хотя бы дать мне совет о том, как отследить проблему или сказать, где я ошибаюсь. У Вас есть какие-то предложения?
Вы смотрели вызовы ajax из инструмента трассировки сети браузера, чтобы точно увидеть, что находится в PUT по сравнению с POST или GET? Было бы хорошо изолировать его от PUT, чтобы быть уверенным
По вашему предложению я сделал. Я также попробовал это на почтальоне. На почтальоне все в порядке, но, судя по тому, что я вижу в инструменте трассировки, что-то не так с запросом на размещение. Мы сужаем его.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Благодаря @DDupont я смог найти, где я ошибся. Очень простая небрежная опечатка в заголовках HTTP-запроса PUT.
"Content-type": "application.json"
У меня там был период. Это должно было быть...
"Content-type": "application/json"
Все время прямо у нас под носом :) И люди недоумевают, почему программное обеспечение может занимать так много времени!
Можете ли вы объяснить, что должен передать ваш комментарий «нет предупреждений от веб-пакета»?