Запрос на изменение данных работает бесконечно долго
Помогите разобраться с запросом. У меня есть две страницы: Profile.html, на которой отображаются данные пользователя. При нажатии на кнопку Изменить, пользователь попадает на страницу ChangeProfile.html, где может изменять свои данные в специальной форме. На странице ChangeProfile.html есть кнопка сохранить. По нажатию на неё, пользователь автоматически попадает на страницу с Profile.html, где отображаются все его данные.
Мой код изменяет данные, но 1 или 2 раза). После чего, страница ChangeProfile.html не реагирует на нажатие на кнопку. В консоль выводиться "привет" из функции putData(url = '', data = {}). Если нажимать на кнопку ещё раз, будет выведено сообщении о том, что запрос ещё выполняется, но он выполняется очень долго.
Помогите пожалуйста разобраться. Не знаю, в чём ошибка.
async function putData(url = '', data = {}) {
// Опции запроса
const requestOptions = {
method: 'PUT',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
};
// Отправка запроса и обработка ответа
try {
console.log("Привет");
const response = await fetch(url, requestOptions);
const responseData = await response.json();
return responseData;
} catch (error) {
console.error('Ошибка при выполнении запроса:', error);
throw error;
}
}
async function changeProfile() {
if (isRequestPending) {
console.log('Запрос уже выполняется, подождите...');
return;
}
const token = localStorage.getItem('token');
if (!token) {
console.error('Токен не найден в localStorage');
return;
}
// const idStudents = "1";
const firstName = document.getElementById('changeFirstname').value;
const secondName = document.getElementById('changeSecondname').value;
const thirdName = document.getElementById('changeThirdname').value;
const schoolName = document.getElementById('changeShoolName').value;
const schoolClass = document.getElementById('changeClass').value;
const schoolLetter = document.getElementById('changeLetterClass').value;
const country = document.getElementById('changeCountry').value;
const city = document.getElementById('changeCity').value;
const data = { token, firstName, secondName, thirdName, schoolName, schoolClass, schoolLetter, country, city };
try {
isRequestPending = true;
const response = await putData('/students/me', data);
console.log('Данные успешно обновлены:', response);
localStorage.setItem('profileData', JSON.stringify(response));
window.location.href = "Profile.html";
} catch (error) {
console.error('Ошибка при обновлении данных:', error);
// Ваш код для обработки ошибки
} finally {
isRequestPending = false;
}
}
document.addEventListener('DOMContentLoaded', () => {
const saveChangeBtn = document.getElementById('savingChange');
// Назначаем обработчик события клика на кнопку регистрации
saveChangeBtn.addEventListener('click', async (event) => {
event.preventDefault(); // Предотвращаем стандартное действие кнопки (отправку формы)
// Вызываем функцию регистрации
await changeProfile();
});
});
document.addEventListener('DOMContentLoaded', () => {
// Получаем данные из localStorage
const profileData = JSON.parse(localStorage.getItem('profileData'));
if (profileData) {
// Обновляем контент на странице
const changeStudentProfile = document.getElementById('studentNameProfile');
const changeSchoolProfile = document.getElementById('schoolNameProfile');
const classNameProfile = document.getElementById('classNameProfile');
const countryAndCityProfile = document.getElementById('countryCityProfile');
changeStudentProfile.innerHTML = `${profileData.first_name} ${profileData.second_name} ${profileData.third_name}`;
changeSchoolProfile.innerHTML = `${profileData.school_name}`;
classNameProfile.innerHTML = `${profileData.school_class}${profileData.school_letter}`;
countryAndCityProfile.innerHTML = `${profileData.country} - ${profileData.city}`;
// Очищаем данные из localStorage после использования, если нужно
localStorage.removeItem('profileData');
} else {
console.error('Данные профиля не найдены в localStorage');
}
});