tundramani
@tundramani

Хорош ли такой шаблон работы с AJAX?

В работе использую такой простой шаблонный код:

let отправить_данные_на_сервер = function(данные)
{
	let объект_запроса = new XMLHttpRequest()
	объект_запроса.open('POST', 'сохранить_данные.php')
	объект_запроса.send(данные)

	объект_запроса.onreadystatechange = function()
	{
		if ( объект_запроса.readyState === 4 )   // 4 означает: запрос завершен
		{
			if ( объект_запроса.status < 200 || объект_запроса.status > 299) // успешный ответ сервера — https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
			{
				alert('сервер не найден')
				return 
			}

			let ответ = объект_запроса.responseText
			alert(ответ) //используем ответ
		}
	}
}


Вопрос - в этом коде есть всё что нужно?
Или есть ошибка?
Или можно еще что-то добавить?

//пс:
мне не нужны более новые методы запросов к серверу
мне тупо хватает этой классики
  • Вопрос задан
  • 799 просмотров
Пригласить эксперта
Ответы на вопрос 3
hzzzzl
@hzzzzl
проще так
https://learn.javascript.ru/fetch

let response = await fetch(url);

if (response.ok) { // если HTTP-статус в диапазоне 200-299
  // получаем тело ответа (см. про этот метод ниже)
  let json = await response.json();
} else {
  alert("Ошибка HTTP: " + response.status);
}
Ответ написан
Kozack
@Kozack Куратор тега JavaScript
Thinking about a11y
в этом коде есть всё что нужно?
А вам чего-то не хватает? Или вам тупо хватает этого пока?

Или есть ошибка?
А что-то не работает?

Или можно еще что-то добавить?
Добавить всегда можно. Но можно ли что-то отнять?

В целом, если вам нужен ревью кода, то я бы такое не пропустил. Просто за использование устаревших техник. Это ухудшает читаемость и работать другим людям сложнее, особенно новичкам.
Но ведь
мне не нужны более новые методы запросов к серверу
, ногда не ясно что вам нужно?
Ответ написан
Комментировать
DIITHiTech
@DIITHiTech
Fullstack javascript developer
Это уже архаизм, к тому дикий велосипед. Зачем 100500 раз опять пытаться писать сырую обертку над XMLHttpRequest? Берите fetch или какую то стороннюю библиотеку, если там надо что то, чего у fetch нету (типа прогресса upload) и вперед.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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