Как передать AJAX responseText в переменную - PullRequest
0 голосов
/ 15 февраля 2020

Я хочу знать, как передать AJAX responseText в переменную? Я хочу использовать это в другой части программы. Код "document.getElementById (" showData "). Inner HTML = xhttp.responseText;" могу правильно отобразить возвращаемую строку, но я не могу использовать переменную для ее получения.

<?PHP
$currHr=date('H')-1;
?>

<form action=""> 

<Select name="SelTime" onchange="rainSum(this.value)">
<?php
if ($currHr>0){
for ($i=$currHr; $i>=0; $i--)
{
    echo "<option value=".$i.">".$i.":00";
    echo " - ";
    echo $i.":59</option><br>";
}   
}else {
    for ($i=23; $i>=0; $i--)
{
    echo "<option value=".$i.">".$i.":00";
    echo " - ";
    echo $i.":59</option><br>";
}   
}
?>
</Select>
</form>

<p id="showData">Let AJAX change this text.</p>

<script>

function rainSum(str) 
{
  var xhttp = new XMLHttpRequest();

  xhttp.onreadystatechange = function () 
  {

 if (xhttp.readyState === 4 && xhttp.status === 200)
 {
   document.getElementById("showData").innerHTML = xhttp.responseText;
   window.x=xhttp.responseText;
    }
  };

  xhttp.open("GET", "barD.php?SelTime="+str, true);
  xhttp.send();
}



document.write(window.x);</script>

Ответы [ 3 ]

0 голосов
/ 15 февраля 2020

если вы имеете в виду, что переменная x должна содержать данные ответа, которые уже содержат ответ, поскольку она является глобальной переменной

, вам не нужен window.x, вы просто объявляете переменную вне функции

как это

var ResponseTXT='';

    function rainSum(str) 
    {
      var xhttp = new XMLHttpRequest();

      xhttp.onreadystatechange = function () 
      {

     if (xhttp.readyState === 4 && xhttp.status === 200)
     {
       document.getElementById("showData").innerHTML = xhttp.responseText;
       ResponseTXT=xhttp.responseText;
        }
      };

      xhttp.open("GET", "barD.php?SelTime="+str, true);
      xhttp.send();
    }
0 голосов
/ 15 февраля 2020

Вы ведете с асинхронным состоянием, в асинхронном сценарии вы не можете присвоить значение переменной традиционным способом, потому что вы должны подождать, пока функция вернет свой результат, это можно сделать несколькими способами, один из них выполняет асин c функцию, как в примере, а затем использует, подозревает или вызывает функцию асин c и ждет ее результата и затем использует ее

async function rainSum(str) {
    const response = await fetch(`barD.php?SelTime=${str}`);

    return await response.json();
}

// subscribe to the asynchronous function
rainSum("some string").then(response => console.log(response));

Некоторые соответствующие ссылки

fetch Promises, async / await

Потратьте время, чтобы понять разницу между синхронными и асинхронными функциями и методами javascript, чтобы привести к этим случаям, в javascript очень распространено работать с асинхронными функциями, и имеет смысл ознакомиться с концепцией

0 голосов
/ 15 февраля 2020
let res = rainSum("string")
function rainSum(str) 
{
  var xhttp = new XMLHttpRequest();

  xhttp.onreadystatechange = function () 
  {

 if (xhttp.readyState === 4 && xhttp.status === 200)
 {
   return xhttp.responseText;
    }
  };

  xhttp.open("GET", "barD.php?SelTime="+str, true);
  xhttp.send();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...