Я пытаюсь выполнить XMLHttpRequest для входа в систему через POST и на самом деле делал это раньше. Я попытался переработать свой код из рабочего проекта и немного изменил его, но он больше не работает, и я, честно говоря, понятия не имею, почему.
Отправленный POST всегда пуст.
var user = document.getElementById("username").value;
var pw = document.getElementById("password").value;
if (user != "" && pw != "") {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status === 200) {
var response = this.responseText;
console.info(response);
if (response == "-1") {
//do stuff
} else if (response == "1") {
window.location.href = "/dashboard/"
}
}
};
var params = "username = "+user+"&password = "+pw+"&do=login";
xmlhttp.open("POST","provider/SessionServices.php",true);
xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xmlhttp.send(params);
Он действительно выполняет запрос, и я получаю свой код ошибки из-за отсутствия параметров POST. Я также отлаживал с помощью print_r ($ _ POST) и должен был убедиться, что данные POST никогда не отправляются.
Обновлено: SessionServices.php
print_r($_POST);
if (isset($_POST["username"]) && !empty($_POST["username"]) &&
isset($_POST["password"]) && !empty($_POST["password"])) {
if ($_POST["do"] == "login") {
//login request by xmlhhtp
$user = $_POST["username"];
$pw = $_POST["password"];
//do stuff
} else {
echo "XH-102"; //unknown action
}
} else {
echo "XH-101"; //user,pw,do empty or not set
он всегда выводит "Массив ( ) XH-101 "
как уже упоминалось, я получаю текст ответа. Таким образом, сам запрос работает технически, но текст ответа - это просто моя отладка, печатающая пустой массив $ _POST и мой код ошибки
я имею в виду, вы можете проверить F12, чтобы увидеть данные, которые вы отправляете на сервер. если данные верны, я предполагаю, что проблема в серверной части
ну удивительно ты прав. Совершенно забыл проверить это, и он действительно говорит в данных формы, что параметры верны. Но я не могу понять, почему эти отправленные данные POST пусты при чтении другим php.
поэтому я предполагаю, что проблема в задней части ,,, ^ - ^
Просто добавил SessionServices.php, потому что я действительно не вижу в этом простом коде причины, почему $ _POST должен стать пустым.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Ладно, похоже, я нашел проблему. XMLHttpRequests (или просто с помощью POST?), Похоже, не работает локально или, по крайней мере, с использованием XAMPP. Когда я загрузил его на свой веб-сервер, он просто работал.
нажмите F12 и посмотрите xhr, есть ли данные?