ItsEvilTime
@ItsEvilTime
Сайленсер не дает мне покоя

Как отправить AJAX-запрос?

Как должно быть:
Нажимаю кнопку, открывается файл add_user.php, данные заносятся в базу.

function addUser() {
  var xmlhttp = new XMLHttpRequest();
  xmlhttp.open("POST","../add_user.php",true);
  xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  xmlhttp.send();
  alert(12);
}

<?php
  include("db.php");
  $mysqli->query("INSERT INTO users (login,pass,email) VALUES ('61', '61', '61')");
?>

Мне даже не важны переменные (оставил send пустым, а в php не отлавливал переменные). Мне нужно, чтобы просто были внесены цифры 61.
Если обратиться напрямую к add_user.php - все работает. Если нажать кнопку из формы - то запуститься функция addUser, выведется alert, но данные в базу не будут занесены.
p.s. нужно без JQuery
  • Вопрос задан
  • 211 просмотров
Решения вопроса 1
Petroveg
@Petroveg
Миром правят маленькие с#@&ки
Ваш вопрос непонятен.

Если речь о том, что alert() отработает раньше, чем произойдёт отправка запроса, то всё понятно — запрос же асинхронный. Для получения ответа от сервера регистрируется слушатель на событие readystatrchange.

var request = new XMLHttpRequest();

request.addEventListener('readystatechange', function (data) {
	if (this.readyState == 4 && this.status >= 200 && this.status < 400) {
		//data.responseText || data.responseXML;
	}
});
request.open('POST', '...');
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
request.send(...);

Если же на сервере не происходит какое-то действие (а, судя по всему, запрос не кроссдоменный), нужно искать причину на сервере.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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