JackShcherbakov
@JackShcherbakov

Как возвращать значения, основываясь на результатах AJAX-запроса?

Здравствуйте, коллеги! Недавно столкнулся со следующей проблемой:

Код ниже все время выводит undefined:
function field_is_unique(inputElement){
	var xhr = new XMLHttpRequest();
		xhr.open("GET", "modules/php/check_field_is_unique.php?" + inputElement.dataset.type + "=" + encodeURIComponent(inputElement.value), true);
		xhr.send();
	xhr.addEventListener("loadend", function() {
			var field_is_unique  = JSON.parse(this.responseText).field_is_unique;
			if(!field_is_unique){
				return false;
			}
			return true;
	});	
}

Почему? Как сделать так, что бы функция возвращала значения, основываясь на результатах AJAX-запроса? Если вытащить тело функции, то все работает, но этот блок кода я использую очень часто и поэтому необходима функция.

Заранее выражаю огромную благодарность всем, кто поможет
  • Вопрос задан
  • 64 просмотра
Пригласить эксперта
Ответы на вопрос 1
JackShcherbakov
@JackShcherbakov Автор вопроса
Сделал пока так:
function field_is_unique(inputElement){
	var xhr = new XMLHttpRequest();
		xhr.open("GET", "modules/php/check_field_is_unique.php?" + inputElement.dataset.type + "=" + encodeURIComponent(inputElement.value), true);
		xhr.send();
	xhr.addEventListener("loadend", function() {
			var field_is_unique  = JSON.parse(this.responseText).field_is_unique;
			function show_message(inputElement, error_msg){
				inputElement.previousElementSibling.innerHTML = error_msg;
				inputElement.style.borderColor = "red";
			}
			if(!field_is_unique) show_message(inputElement, "Логин занят");
			window[inputElement.dataset.type + "_is_unique"] = field_is_unique;
	});	
}

Во внешнем коде просто проверяю нужную переменную. Если есть идеи получше - пишите, буду благодарен.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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