JackShcherbakov
@JackShcherbakov

Почему не получается провести AJAX-запрос?

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

У меня на сайте есть форма для регистрации. Я хочу что бы после того, как пользователь ввел логин в поле формы, в случае если введенное им имя пользователя, то ему выдается сообщение, мол, логин занят. Я пытаюсь это сделать при помощи AJAX, но никак не могу понять почему не получается. С сервера просто приходит пустая строка.
Сценарий обработки AJAX-запроса находится по следующему пути по отношению к Js-скрипту, который посылает сам AJAX - modules/php/check_user_exists.php
Вот сам Js (я оставил только AJAX-запрос для наглядности):
var xhr = new XMLHttpRequest();
			xhr.open("GET", "modules/php/check_user_exists.php?login=Citizen", true);
			xhr.send();
		var json = xhr.responseText;
		document.write(json); //ничего не выводит

Никаких ошибок в консоли нет. Путь верен.
Вот сам PHP:
<?php 
	header("Content-Type:application/json");
	include("db_connect.php");
	include("form_validation.php");
	$login = $_GET["login"];
	if(check_user_exists($login)){
		$json = array('user_exists'=>true);
		echo json_encode($json);
		exit;
	}
	$json = array('user_exists'=>false);
	echo json_encode($json);
?>

В чем дело и что я делаю не так?
Заранее выражаю огромную благодарность всем, кто поможет
UPD:
Если через браузер перейти по ссылке modules/php/check_user_exists.php?login=Citizen, то все будет работать нормально. Вот ее вывод через браузер:
{"user_exists":true}
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
delphinpro
@delphinpro
frontend developer
А чего вы собственно ожидаете? Оно и не должно так работать.

AJAX — Asynchronous Javascript and XML
Ключевое слово Asynchronous.

xhr.send(); - запрос ушел и вы не знаете, когда поступит ответ
но сразу же пытаетесь прочесть ответ
var json = xhr.responseText;

Конечно, ничего не работает.

Вам нужно подписаться на событие onreadystatechange
в нём проверять состояние запроса, и в нём же совершать необходимые действия при успешном/неуспешном запросах.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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