Не работает функция, которая должна возвращать строку, а в итоге возвращает "undefined".
Ссылка на сайт, где можно увидеть все в консоле (Чтобы понять, что из себя делает сайт, откройте 1 страницу, а на других вкладках можно перезагрузить, на первой значение поменяется без перезагрузки) :
index.php:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Счетчик просмотров</title>
<script type="text/javascript">
function getx(){ //Получение переменной из php
let xhr = new XMLHttpRequest();
xhr.open('GET', 'get.php', true);
xhr.send();
xhr.onreadystatechange = function () {
if(xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
let Re = xhr.responseText;
console.log(Re); //Показывает значение переменной
return 'любую строку он вернет как undefined' ;//Не возвращает
};
};
}
function myFunction() {
let a = document.getElementById("p1");
let num = getx(); //Получаем значение счетчика (должны получать)
console.log(num); //Получаем undefined
if (a.textContent.split(' ')[-1] != num) {
a.innerHTML = 'Количество'+' просмотров :' + num;
}
setTimeout(myFunction, 1000) //рекурсия
}
</script>
</head>
<body onload="myFunction()">
<?php //Записываем +1 к счетчику просмотров страницы
$f = strval((int)fgets(fopen('x.php', 'r'))+1);
$fw = fopen('x.php', 'w');
fwrite($fw, $f);
fclose($fw);
?>
<p id="p1"></p>
</body>
</html>
Файл php.get :
<?php
echo file_get_contents('x.php');
?>
Файл x.php:
215 //любое число
Я не могу понять, почему функция getx() вроде как работает, т.к. нужные значения пишутся в строке, но почему тогда они не возвращаются?