Autor Zpráva
AntonP
Profil
Dobrý deň,
dalo by sa nejako prečítať obsah txt súboru (samozrejme nachádza sa na tom istom serveri ako je hlavný script) do javascript premennej? Teraz mám js script:
function readTempVar() {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
     var temp = this.responseText;
     return temp;          
    }
  };
  xhttp.open("POST", "temp.txt", true);
  xhttp.send();
}

var mail = readTempVar();
ale keď dám do súboru tohoto súboru vypísať premennú "mail", tak nenapíše nič. V txt súbore sa nachádza text. Predom ďakujem za pomoc.
Mlocik97
Profil
https://stackoverflow.com/a/6470598/8070076
Keeehi
Profil
AntonP:
Problém toho přístupu je, že AJAX je asynchronní (to je to první písmeno). To znamená že v době kdy se ze serveru vrátí odpověď je script už daleko za řádkem 13. Do té proměnné mail se dostane návratová hodnota funkce readTempVar (kterou nedefinuješ, proto ta ani nic není) a ne ta návratová hodnota té anonymní funkce. S tou přečtenou hodnotou musíš pracovat uvnitř té anonymní funkce. Takže pokud ji chceš někam vypsat, bude to nejlepší už tam.

<div id="mail"></div>

<script>
function readTempVar() {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
     document.getElementById("mail") = this.responseText;
    }
  };
  xhttp.open("POST", "temp.txt", true);
  xhttp.send();
}
 
readTempVar();
</script>

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0