@Cicle

PHP не видит POST запрос, отправленный через XMLHttpRequest?

Есть код JavaScript на нажатие кнопок.
При нажатии на кнопку авторизации POST нормально доходит. А вот при отправке комментария, $_POST ничего не видит.
Я не могу понять почему форма авторизации нормально доходит, а вот отправка комментария - нет.

if (logInButton != null) {
	logInButton.onclick = function() {
		var login = document.getElementById("userLogin");
		var password = document.getElementById("logPasswordCheck");

		if (login.value.length == 0 || password.value.length == 0) {
			alert('Поля не должны быть пустыми.')
		} else if (login.value.length < 4 || password.value.length < 4) {
			alert('Данные должны быть не меньше 4 символов.')
		} else {
			var formData = new FormData();
			formData.append('Login', login.value);
			formData.append('Password', password.value);

			var request = new XMLHttpRequest();

			function reqReadyStateChange() {
				if (request.readyState == 4 && request.status == 200)
					document.getElementById("output").innerHTML = request.responseText;
			}

			request.open("POST", "/");
			request.onreadystatechange = reqReadyStateChange;
			request.send(formData);
			window.location.href = '';
		}
	}
}


if (addComment != null) {
	addComment.onclick = function() {
		var productId = document.getElementById("productId");
		var login = document.getElementById("getUserLogin");
		var text = document.getElementById("commentText");
		var commentStatus = document.getElementById("commentStatus");
		var rating = document.getElementById("rating");

		if (text.value.length == 0) {
			alert('Поле не должно быть пустум')
		} else if (text.value.length < 15) {
			alert('Комментарий слишком маленький. Комментарий должен быть больше 15 символов.')
		} else if (rating.value < 1 || rating.value > 5) {
			alert('Рейтинг должен быть от 1 до 5')
		} else {
			var formData = new FormData();
			formData.append('productId', productId.value);
			formData.append('userLogin', login.value);
			formData.append('commentText', text.value);
			formData.append('commentStatusId', commentStatus.value);
			formData.append('rating', rating.value);

			var request = new XMLHttpRequest();

			function reqReadyStateChange() {
				if (request.readyState == 4 && request.status == 200){
					document.getElementById("output").innerHTML = request.responseText;
				}
			}

			request.open("POST", "/");
			request.onreadystatechange = reqReadyStateChange;
			request.send(formData);
			window.location.href = '';
		}
	}
}

Вот форма которую я хочу отправить.

$productId = $_GET['id'];
$userLogin = $_SESSION['login'];
echo "<a><form method=\"post\" id=\"addCom\">";
    echo "<input type=\"hidden\" id=\"productId\" value=$productId>";
    echo "<input type=\"hidden\" id=\"getUserLogin\" value=$userLogin>";
    echo "<li><textarea id=\"commentText\"></textarea></li>";
    echo "<input type=\"hidden\" id=\"commentStatus\" value=2>";
    echo "<li style=\"font-size: 18px;\">Рейтинг товара: <input type=\"number\" id=\"rating\" value=\"5\" min=\"1\" max=\"5\" step=\"1\"></li>";
echo "</form>";
echo "<button style=\"border-radius: 15px;\" id=\"AddComment\">Добавить комментарий</button></a>";


А тут я пытаюсь проверить POST.

if (isset($_POST['productId'])) {
	$message = "work";
	echo "<script>alert('$message')</script>";
} else {
	$message = "not work";
	echo "<script>alert('$message')</script>";
}
  • Вопрос задан
  • 191 просмотр
Пригласить эксперта
Ваш ответ на вопрос

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

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