Her lar vi brukeren velge en tekt og vi legger den teksten til en fil på serveren
Dagens vær
Koden er slik:
_put.js
//--------------------------
// send a txt to python and append it to "messages.txt"
function sendIt(){
var pythonAdr="storeFile.py";
var txt=document.getElementById("valg").value;
var D = new Date();
var Y="\n"+D.getDate()+":"+(D.getMonth()+1)+":"+D.getFullYear();
var formData=new FormData();
formData.append('date',Y);
formData.append('content'," "+txt);
fetch(pythonAdr,
{
method: 'PUT',
body:formData
})
.then(function(response){
return response.text();
})
.then(function(myText) {
console.log(myText);
})
.catch(function(err) {
alert("-error- : meldingen er ikke lagret \n"+err);
});
}
Det er tre ting å merke seg i koden:
Vi bruker Formdata til å preparere de feltene vi vil sende
Vi sier at metoden er PUT
Det som sendes er angitt som body
Python fila som tar imot teksten er slik:
_storeFile.py
#! /usr/bin/python2
import cgi
import sys
import random
def updateFile(fileName,option,txt):
# option= a:append, w:write
try:
with open(fileName, option) as file:
file.write(txt)
file.close()
return "ok"
except:
print 'Trouble writing to: '+fileName
res=sys.exc_info()
print res[1]
return('error',res[1])
form=cgi.FieldStorage()
print 'Content-type: text/html; charset=utf-8\n'
# expect to find date and content
try:
fileN="messages.txt"
content=form['content'].value
date=form['date'].value
# keep file small, remove content
if random.randint(1, 100) < 10:
res=updateFile(fileN,'w',date+" : fila ble slettet")
res=updateFile(fileN,'a',date+" : "+content)
if res =='ok':
print "-ok-"
else:
print "-error-"
except :
print 'error'
Python koden er laget slik at den fjerner innholdet på fila
med ujevne mellomrom.
Vi kan også hente alle lagrede meldinger
Du kan teste her:
Koden er slik.
_get.js
//--------------------------
// fetch "messages.txt"
function fetchIt(){
var adr="messages.txt";
fetch(adr, {cache: "no-cache"})
.then(function(response) {
if (response.ok)
return response.text();
else
return response.status+'\n'+response.statusText;
})
.then(function(myText) {
document.getElementById("messages").innerHTML=myText;
})
}
Du kan også se nærmere på koden og HTML-siden her: