Как извлечь числовое значение из свойства responseText? - PullRequest
0 голосов
/ 19 октября 2019

У меня проблемы с простым Ajax / JavaScript / PHP. Я использую Ajax для вызова сценария PHP, который генерирует случайное число.

Мне удалось успешно вызвать скрипт и показать это случайное число внутри элемента.

Но проблема в том, что мне нужно использовать это число для последующих вычислений, и я не знаю, как преобразовать xhttp.responseText в число и сохранить его в переменной.

Все, что я получаю от .responseText, это либо Nan, либо undefined, либо в данном случае <p id = "number">VALUE</p>.

Может кто-нибудь помочь, пожалуйста?

Вот полный код:

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <button id= "btn" type="button" onclick="loadDoc()">Generate number</button>
    <div id="random">
        <p id = "number"></p>
    </div>
    <script src = "javascript.js"></script>
</body>
</html>

function loadDoc() {
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            document.getElementById("number").innerHTML =
            xhttp.responseText;
        }
    };
    xhttp.open("POST", "script.php", true);
    xhttp.send();
    console.log(number);
}

//PHP

<?php
    function getRandom(){
        $rand = rand(1,16);
        return $rand;
    }
    echo getRandom();
?>

Ответы [ 2 ]

0 голосов
/ 19 октября 2019

для разбора числа из строки, используйте функцию js parseInt (). и, возможно, проверьте ваш PHP, возвращая что-нибудь

0 голосов
/ 19 октября 2019

Измените свой php-код на

<?php
function getRandom(){
    $rand = rand(1,16);
    return $rand;
}
echo getRandom();
?>

Вы ничего не возвращаете с php. Добавить эхо перед функцией getRandom ()

//New Edit
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<button id= "btn" type="button" onclick="loadDoc()">Generate number</button>
<div id="random">
    <p id = "number"></p>
    <input type='hidden' id="number_1" value='0' />
</div>
<script src = "javascript.js"></script>
</body>
</html>

<script>
    function loadDoc() {
      var xhttp = new XMLHttpRequest();
      xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
          document.getElementById("number").innerHTML = xhttp.responseText;
          document.getElementById('number_1').value = xhttp.responseText; //This sets the value in hidden field and you can use it later.
          alert(document.getElementById('number_1').value);
        }
      };
      xhttp.open("POST", "script.php", true);
      xhttp.send();
      console.log(number);
    }
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...