Я работаю над трехуровневой системой входа в школу, и у меня возникают проблемы с отправкой и получением сообщений с помощью JSON + POST. У меня есть интерфейс, который принимает имя пользователя и пароль:
<div id = "login form" style="text-align: center">
<input type="text" id="username" name ="username"><br>
<input type="password" id="password" name ="password"><br>
<button id="login"> Login</button>
<div>
, а затем ОТПРАВЛЯЕТ его, используя AJAX, на «оборотную сторону лицевой стороны» - сценарий PHP. Сценарий PHP во внешнем интерфейсе просто перемещает то же сообщение в середину, которая направляет его в серверную часть, которая запрашивает базу данных и возвращает результат. Я сделал следующий сценарий PHP для внешнего интерфейса:
header('Content-type: application/json');
$middle_url = "https://myurl.edu/";
$username = $_POST['username']; //extract credentials
$password = $_POST['password'];
// load new array
$credentials = array(
'username' => $username,
'password' => $password
);
$ch = curl_init(); // curl handle
curl_setopt($ch, CURLOPT_URL, $middle_url . "test.php");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $credentials); // load credentials to POST
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // set return type to string
$middle_reply = curl_exec($curl); // execute curl and store response
curl_close($ch);
echo $middle_reply;
Моя проблема в том, что при запуске файла HTML я получаю пустую строку в результате, и я не уверен, почему .
Я создал тестовый файл, в котором я жестко закодировал возврат следующим образом:
<?php
header('Content-type: application/json');
$response = array(
'role' => 0
);
echo (json_encode($response));
?>
Если я подключу свой HTML непосредственно к этому тестовому файлу, я получу массив, который Я ожидаю, но когда я пытаюсь сначала выполнить маршрутизацию через свой интерфейсный файл PHP, мне все равно возвращается пустая строка. Пожалуйста, помогите мне.
РЕДАКТИРОВАТЬ: Если это полезно, я размещаю данные из моего HTML файла следующим образом:
<script>
const form = {
username: document.getElementById('username'),
password: document.getElementById('password'),
login: document.getElementById('login'),
};
form.login.addEventListener('click',validate);
function validate() {
var ajax = new XMLHttpRequest();
ajax.onload = function() {
if (this.status == 200) {
console.log(this.responseText);
const response = JSON.parse(this.responseText);
if(response['role'] == 1){
location.href = 'teacher.html';
}
else if (response['role'] == 0) {
location.href = 'student.html';
}
}
};
const postData = `username=${form.username.value} password=${form.password.value}`;
ajax.open('POST','login.php',true);
console.log(postData);
ajax.send(postData);
}
</script>