Creare una form con Ajax

Transcript

Creare una form con Ajax
Creare una form con Ajax
(10 Gen, 2007 at 09:20 PM) - Contributed by Giorgio S - Last Updated (20 Feb, 2007 at 08:02 AM)
Nell'ottica di migliorare il sito in bse alle vostre richieste, partiamo ad
inserire maggiori esempi sul come utilizzare Ajax stesso, di modo da dare
un'idea più chiara delle sue potenzialità. Partiamo da un esempio abbastanza
semplice: vogliamo far si che, dopo aver inserito inserendo una
parola in una form ed aver cliccato sul pulsante per la submit , Javascript
perovveda all'invio tramite Xhr(XmlHttpRequest) dei dati ad uno script (qui
abbiamo usato cgi, ma potete utilizzare qualsiasi linguaggio preferiate) e
all'aggiornamento della pagina stessa, riportando la vostra password inserita,
oltre al vostro IP.
Iniziamo dal codice lato Html, quello che deve contenere le funzioni
Javascript per inizializzare e gestire la XHR e il successivo aggiornamento
della pagina. La form si chiama "f1" e la cgi che viene poi chiamata è
esempioajax.cgi.
<html><head>
<title>Esempio Ajax v Form</title>
<script language="Javascript">
function xmlhttpPost(strURL) {
var xmlHttpReq = false;
var self = this;
// Xhr per Mozilla/Safari/Ie7
if (window.XMLHttpRequest) {
self.xmlHttpReq = new XMLHttpRequest();
}
// per tutte le altre versioni di IE
else if (window.ActiveXObject) {
self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
}
self.xmlHttpReq.open('POST', strURL, true);
self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
self.xmlHttpReq.onreadystatechange = function() {
if (self.xmlHttpReq.readyState == 4) {
updatepage(self.xmlHttpReq.responseText);
}
}
self.xmlHttpReq.send(getquerystring());
}
function getquerystring() {
var form = document.forms['f1'];
var word = form.word.value;
qstr = 'w=' + escape(word); // NOTARE bene che non viene messo '?' prima della querystring
return qstr;
}
function updatepage(str){
document.getElementById("result").innerHTML = str;
}
</script>
</head>
<form name="f1">
<p>word: <input name="word" type="text">
<input value="Go" type="button" onclick='JavaScript:xmlhttpPost("/cgi-bin/esempioajax.cgi")'></p>
http://www.ajaxcity.it - Ajaxcity.it
Powered by Mambo
Generated:17 April, 2007, 09:13
<div id="result"></div>
</form>
<div id=result></div>
</body>
</html>
Passiamo ora allo script Cgi che, abbiamo visto prima, viene passato come
argomento alla funzione JavaScript in fase di submit [onclick='JavaScript:xmlhttpPost("/cgi-bin/esempioajax.cgi"].
Al posto di una cgi avreste potuto utilizzare qualsiasi linguaggio, il risultato
non cambia affatto.
#!/usr/bin/perl -w
use CGI;
$query = new CGI;
$secretword = $query->param('w');
$remotehost = $query->remote_host();
print $query->header;
print "<p>La parola inserita è ed il vostro IP è .</p>";
http://www.ajaxcity.it - Ajaxcity.it
Powered by Mambo
Generated:17 April, 2007, 09:13