Guten Tag. Folgendes Problem: Ich habe ein bash-cgi Skript welches mir eine html-seite erzeugt. Durch das Absenden eines Formulars lese ich in dem Skript Daten von einem TCP-Socket und gebe diese dann auf der Seite aus. Der Benutzer kann in dem Formular aber auch eine checkbox aktivieren und nach dem absenden wird darauf hin ein <meta refresh .. > hinzugefügt der immer wieder die Seite aktualisiert und die Daten des Sockets so zyklisch gelesen und ausgeben werden. Nun ich habe noch nie was mit ajax gemacht, doch bisher immer davon gelesen das man dies zum refreshen der Seite nutzen kann ohne diese neuzuladen.
Im Prinzip müsste nach dem Absenden des Forumulars (in Abhängigkeit der getroffenen Auswahl) immer wieder der Teil wiederholt werden wo die Daten aus dem Socket gelesen werden und dann die Daten im Div aktualisiert werden.
Ich hänge hier mal den Code mit an:
Nun meine Frage ob ajax dafür das Richtige ist und wie man die ganze Sache angeht?
Im Prinzip müsste nach dem Absenden des Forumulars (in Abhängigkeit der getroffenen Auswahl) immer wieder der Teil wiederholt werden wo die Daten aus dem Socket gelesen werden und dann die Daten im Div aktualisiert werden.
Ich hänge hier mal den Code mit an:
HTML:
#!/bin/sh
#Header senden
echo "Content-type: text/html\n"
modus="Single Reading"
#Skriptname auslesen
name=$( basename $0 )
#Auswertung Parameterübergabe
submit=`echo "$QUERY_STRING" | sed -n 's/^.*send=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
periodic=`echo "$QUERY_STRING" | sed -n 's/^.*periodic=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
refreshtime=`echo "$QUERY_STRING" | sed -n 's/^.*refreshtime=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
Teil wo Daten nach submit gelesen werden
#Sende Anfrage und hole Daten von RS232
if [ "$submit" = "true" ]
then
#info=$( echo "(print)" | nc 192.168.1.10 9000 )
#echo "(set-repl-prompt! \"\")" | nc 192.168.1.10 9000
echo "(read_ISO)" | nc 192.168.1.10 9000
info=$( nc 192.168.1.10 9001 )
fi
#Auswahl ob refresh gesetzt ist
if [ "$periodic" = "true" ]
then
meta_refresh='<meta http-equiv="refresh" content="'$refreshtime'; URL=RFID.sh?periodic=true&refreshtime='$refreshtime'&send=true">'
flag="checked='true'"
modus="Cycle Reading"
fi
#Beginn Html
echo '<html>'
echo '<head>'
echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">'
echo $meta_refresh
echo '<title></title>'
echo '<link rel="stylesheet" type="text/css" href="http://localhost/webif/style.css">'
echo '</head>'
echo '<body>'
echo '<div id="container">'
#Header
echo '<div id="header">'
echo '</div>'
#Navigationsleiste
echo '<div id="nav">'
echo '<ul>'
echo '<li><a href="RFID.sh">Daten lesen</a></li>'
echo '<li><a href="RFID.sh">Passwort ändern</a></li>'
echo '</ul>'
echo '</div>'
echo '<div id="wrapper">'
echo '<div id="content">'
#ab hier beginnt der Inhalt
echo '<div id="links">'
echo '<h1>Einstellungen:</h1>'
echo '<form name="input" action="RFID.sh" method="GET">'
echo '<label>Modus: '$modus'</label><br><br><br>'
echo '<label for="periodic">zyklisch:</label>'
#echo '<input type="checkbox" name="periodic" id="periodic" value="true" '$flag' onclick="if(!this.checked) this.form.submit();"><br>'
echo "<input type='checkbox' name='periodic' id='periodic' value='true' "$flag" onClick=\" if(!this.checked) self.location.href='RFID.sh'\"><br>"
echo '<label for="intervall">Intervall:</label>'
echo '<select name="refreshtime">'
echo '<option value="1"'
if [ "$refreshtime" = "1" ]
then
echo "selected"
fi
echo '>1sec</option>'
echo '<option value="2"'
if [ "$refreshtime" = "2" ]
then
echo "selected"
fi
echo '>2sec</option>'
echo '<option value="3"'
if [ "$refreshtime" = "3" ]
then
echo "selected"
fi
echo '>3sec</option>'
echo '</select><br><br>'
echo '<input type="hidden" name="send" value="true">'
echo '<input type="submit" value="RFID-Tags lesen">'
echo '</form>'
echo '</div>'
echo '<div id="scroll">'
echo '<h1>empfangene Daten:</h1>'
echo '<ul id="ausgabe">'
#echo $meldung
Teil wo Daten nach submit ausgegeben werden
#Trennzeichen setzen und empfangene Daten untereinander ausgeben
IFS=$'.'
for i in $info; do echo "<li>"$i"</li>"; done
unset IFS
echo '</ul>'
echo '</div>'
echo '<br style="clear:both;">'
#Ende Inhalt
echo '</div>'
echo '</div>'
echo '<div id="footer">'
echo '</div>'
echo '</body>'
echo '</html>'
Nun meine Frage ob ajax dafür das Richtige ist und wie man die ganze Sache angeht?