Hoe tekst naar txt-file schrijven met AJAX

Moderators: jkien, Xilvo

Reageer
Berichten: 47

Hoe tekst naar txt-file schrijven met AJAX

Hallo
 
Kan iemand mij vertellen hoe ik vanuit een html-pagina met AJAX een tekst kan schrijven naar een txt bestand? Ik kan met JavaScript tekst uit een txt bestand lezen en dit laten zien op een webpagina, maar ik vind maar niet hoe ik het omgekeerde kan doen (met een button wat tekst schrijven naar een txt bestand). Ik vermoed dat dit ook weer op te lossen is met AJAX, maar ik vind niet hoe.
 
Code voor het lezen van tekst, het txt-bestand (Temperature.txt) zit in dezelfde map als de html-pagina:
 
<body>
 
<div id="Temperature">

    <button type="button" onclick="loadDoc0()">Temperature</button>
 
<script>

    function loadDoc0() {

    var xhttp = new XMLHttpRequest();

    xhttp.onreadystatechange = function() {

    

    if (this.readyState == 4 && this.status == 200) {

      document.getElementById("Temperature").innerHTML =

      this.responseText;
                                            }

                                          };

      xhttp.open("GET", "Temperature.txt", true);

      xhttp.send();

                       }
 
</script>
 
</body>
 
Alvast bedankt
Mvg Kevin

Berichten: 12.262

Re: Hoe tekst naar txt-file schrijven met AJAX

Niet: javascript kan geen bestanden op de server schrijven, maar wel lezen (voor zover ze op een voor de browser toegankelijke plek staan). 
 
Als je wilt schrijven zul je op de server iets in php/python oid moeten maken dat naar het textbestand schrijft, of de gegevens in een database zet oid. 
Victory through technology

Berichten: 47

Re: Hoe tekst naar txt-file schrijven met AJAX

Oke. Is het mogelijk om met Ajax rechtstreeks een python file aan te spreken? En zo ja, hoe dan? Want ik gebruik liever geen php omdat ik daar niet vertrouwd mee ben.

Mvg

Gebruikersavatar
Berichten: 17.653

Re: Hoe tekst naar txt-file schrijven met AJAX

AJAX is niet meer dan een verzameling front-end technieken (die in de browser plaatsvinden) welke vervolgens dmv XMLHTTP gegevens kan uitwisselen. Je doet een aanvraag voor gegevens en krijgt een antwoord.
 
Je kunt hier in principe wel een python script mee aanroepen, maar volgens mij heeft dat ook weer een wrapper nodig als Flask om door een browser aangeroepen te kunnen worden. Maar eerlijk is eerlijk: ik heb maar beperkte ervaring met python en dan alleen lokaal via de command line.
 
Echter is ook python maar een stuk gereedschap en niet je doel. Volgens mij is alles wat je wil het kunnen wegschrijven van een logbestandje. Klopt dat?
"Knowledge speaks, but wisdom listens."
- Jimi Hendrix -

Berichten: 47

Re: Hoe tekst naar txt-file schrijven met AJAX

Ik wil als client een python bestandje laten runnen aan de server side.

Ik zou dit doen door het python bestand rechtsstreeks op te roepen met Ajax maar ik weet niet zo goed of dit kan en hoe je het doet.

Mijn ander idee was om vanaf mijn webpagina(html) via Ajax een waarde te sturen naar een Txt bestand. Bijvoorbeeld True. Die waarde laat ik door een python bestand inlezen want (ik weet hoe dat moet). Die ingelezen True gebruik ik dan in een voorwaarde om wat python commandos uit te voeren.

Gebruikersavatar
Berichten: 17.653

Re: Hoe tekst naar txt-file schrijven met AJAX

Even een mock-up gemaakt. Zoals gezegd heb ik weinig ervaring met Python, maar volgens mij geeft dit je wel een duwtje in de juiste richting.

Code: Selecteer alles

<!DOCTYPE html>

<html>

    <head>

        <title>Temperature example</title>

        <meta charset="UTF-8">

        <meta name="viewport" content="width=device-width, initial-scale=1.0">

    </head>

<body>



    <div>

        <button type="button" onclick="writeDoc()">Append row in file</button>

    </div>

    

    <div>

        <button type="button" onclick="loadDoc0()">Load Temperature file content</button>

    </div>



    <div id="Temperature">



    </div>



    <script>



        function loadDoc0() {

            var xhttp = new XMLHttpRequest();

            xhttp.onreadystatechange = function() {



                if (this.readyState == 4 && this.status == 200) {

                    markedUpResponse = (this.responseText + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + '<br>' + '$2');

                    document.getElementById("Temperature").innerHTML = markedUpResponse;

                }

            };

            xhttp.open("GET", "Temperature.txt", true);

            xhttp.send();

        }



        function writeDoc() {

            var xhttp = new XMLHttpRequest();

            var temp = Math.floor(Math.random() * (50 - 0 + 1))

            xhttp.onreadystatechange = function() {



                if (this.readyState == 4 && this.status == 200) {

                  document.getElementById("Temperature").innerHTML =

                  this.responseText;



                }

            };

            xhttp.open("GET", "write.php?temp="+temp, true); // roept PHP bestand aan

            xhttp.send();

        }

    </script>



</body>

</html>

Code: Selecteer alles

<?php



$filename = 'Temperature.txt';

if (!isset($_GET['temp'])) {

    exit('unauthorised access');

}

$writeTmp = (int) $_GET['temp'];

$unit = '°C';

$appendText = date('YmdHis') . ': ' . $writeTmp . $unit . PHP_EOL;





if ($handle = fopen($filename, 'a')) { // 'a' sets append mode

    fwrite($handle, $appendText);

    fclose($handle);

}
Dit geeft allen sec antwoord op je eerste topic vraag, namelijk hoe je m.b.v. AJAX (en in dit geval PHP) naar een TXT file schrijft. Ik ken zoals gezegd geen methode om direct python aan te roepen.
 
"Knowledge speaks, but wisdom listens."
- Jimi Hendrix -

Berichten: 47

Re: Hoe tekst naar txt-file schrijven met AJAX

Oke bedankt Ger! Ik zal er het beste van maken.

Mvg

Berichten: 12.262

Re: Hoe tekst naar txt-file schrijven met AJAX

Prima voorbeeld van hoe dat met php doet, het ziet er eigenlijk gewoon helemaal af uit :)
 
Wel even van belang: zorg ervoor dat 'Temperature.txt' "writeable" is voor php (als je het via ftp upload, permissies 777 meegeven). 
Victory through technology

Berichten: 47

Re: Hoe tekst naar txt-file schrijven met AJAX

Ik heb de 2 bestanden eens opgeslagen en getest. Vreemd genoeg wordt er niks geschreven naar het tekst bestand. Ik heb totaal geen ervaring met php😅.

Php en html bestanden zitten in dezelfde map. Zou je misschien wat meer uitleg kunnen geven, ik vrees dat ik door onkunde het php programma verkeerd gebruik😅. De webpagina test ik momenteel offline, in m'n browser. Hoe kun je zien wat je schrijft naar het txt bestand?

Moesten jullie me nog eens kunnen bijstaan met uitleg dan zou ik jullie erg dankbaar zijn.

Ik kan wel de inhoud van het txt bestand op de webpagina zichtbaar maken met uw php en html als ik zelf iets in dat bestand schrijf.

Mvg
Ik maak enkel gebruik van Notepad++ om de programma's te schrijven. Verder is er een simpele apache2 server die runt op een RP. Externe programmas gebruik ik dus niet.
Gewoon eens zeggen, maar ik maak alles op mijn laptop. Later zet ik ze dan op de server met de nodige aanpassingen.

Berichten: 12.262

Re: Hoe tekst naar txt-file schrijven met AJAX

Klinkt wellicht als een domme vraag, maar heb je wel een locale server op die laptop lopen die php ondersteunt? 
 
Wat zie je als je write.php opent in je browser?
Victory through technology

Berichten: 47

Re: Hoe tekst naar txt-file schrijven met AJAX

Mijn laptop gebruik ik om de bestanden te maken. Ze testen doe ik offline met een browser (meestal mozilla firefox).

Mijn laptop fungeert niet als server.

Als ik het bestand write.php open doe met internet explorer komt de php inhoud gewoon op de browserpagina. Wanneer ik het open met Mozilla Firefox heeft de adresbalk het adres van het php bestand aan. Verder wordt er dan geen inhoud weergegeven.

Gebruikersavatar
Berichten: 17.653

Re: Hoe tekst naar txt-file schrijven met AJAX

Als je de PHP code ziet verschijnen in je browser dan draait je webserver (apache2) niet. En in dat geval wordt er dus ook niets uitgevoerd, weggeschreven, etc.
"Knowledge speaks, but wisdom listens."
- Jimi Hendrix -

Berichten: 47

Re: Hoe tekst naar txt-file schrijven met AJAX

Oke Ger. Dus in feite zal het wel lukken op de Rasp. Pi maar niet op mn laptop. (Server staat op de Rasp. Pi)

Berichten: 12.262

Re: Hoe tekst naar txt-file schrijven met AJAX

Inderdaad, je moet een server hebben die php ondersteunt. 
 
Dat kan overigens prima met een laptop, maar je moet er wel het nodige voor installeren (apache, php, wellicht mysql als je iets met databases wilt doen). Niet heel moeilijk of heel veel werk, maar het werkt wezenlijk anders dan alleen html en javascript waar je een pagina gewoon kunt bekijken uit een willekeurige directory. 
Victory through technology

Reageer