Ciao a tutti, ho realizzato un forum un ajax molto semplice. Il form passa i dati ad una pagina che li elabora. Il risultato della pagina viene visualizzato nella pagina del form all'interno di un div:
pagina iscrizione.php:
<div id="MyResult" name="MyResult"></div>
<form id="form_ajax" name="MyForm" method="post" onsubmit="xmlhttpPost('iscriviti_go.php', 'MyForm', 'MyResult', 'Wait...'); return false;">
<label for=nome>
Nome:
</label>
<input type=text name=nome>
<label for=pass>
Password:
</label>
<input type=text name=pass>
<label for=pass2>
Reinserisci Password:
</label>
<input type=text name=pass2>
<input type=submit value=Iscriviti>
</form>
il form passa i dati alla pagina iscrizione_go.php:
$pass=$_POST['pass'];
$pass2=$_POST['pass2'];
$nome=$_POST['nome'];
if ($pass=$pass2)
{
INSERISCO I DATI NEL DATABASE
echo "iscrizione andata a buon fine";
}
else
{ echo "le password inserite non corrispondono"; }
Una volta che i dati sono passati visualizza all'interno del div myresult della pagina iscrizione.php il risultato della pagina iscrizione_go.php... in sostanza nel div viene scritto: Iscrizione andata a buon fine oppure "Le password inserite non corrispondono" se c'è stato qualche errore.
Lo script js è questo qua
function xmlhttpPost(strURL,formname,responsediv,responsemsg) {
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) {
// Quando pronta, visualizzo la risposta del form
updatepage(self.xmlHttpReq.responseText,responsediv);
}
else{
// In attesa della risposta del form visualizzo il msg di attesa
updatepage(responsemsg,responsediv);
}
}
self.xmlHttpReq.send(getquerystring(formname));
}
function getquerystring(formname) {
var form = document.forms[formname];
var qstr = "";
function GetElemValue(name, value) {
qstr += (qstr.length > 0 ? "&" : "")
+ escape(name).replace(/\+/g, "%2B") + "="
+ escape(value ? value : "").replace(/\+/g, "%2B");
//+ escape(value ? value : "").replace(/\n/g, "%0D");
}
var elemArray = form.elements;
for (var i = 0; i < elemArray.length; i++) {
var element = elemArray;
var elemType = element.type.toUpperCase();
var elemName = element.name;
if (elemName) {
if (elemType == "TEXT"
|| elemType == "TEXTAREA"
|| elemType == "PASSWORD"
|| elemType == "BUTTON"
|| elemType == "RESET"
|| elemType == "SUBMIT"
|| elemType == "FILE"
|| elemType == "IMAGE"
|| elemType == "HIDDEN")
GetElemValue(elemName, element.value);
else if (elemType == "CHECKBOX" && element.checked)
GetElemValue(elemName,
element.value ? element.value : "On");
else if (elemType == "RADIO" && element.checked)
GetElemValue(elemName, element.value);
else if (elemType.indexOf("SELECT") != -1)
for (var j = 0; j < element.options.length; j++) {
var option = element.options[j];
if (option.selected)
GetElemValue(elemName,
option.value ? option.value : option.text);
}
}
}
return qstr;
}
function updatepage(str,responsediv){
document.getElementById(responsediv).innerHTML = str;
}
Il mio problema è che vorrei che, invece di stamparmi la scritta "iscrizione andata a buon fine" sopra al form della pagina iscrizione.php, mi apparisse questa stessa scritta in un altra pagina che possiamo chiamare tipo centro.php. Oppure mi basterebbe che venga fuori scritto "iscrizione andata a buon fine" nella pagina iscrizione.php ma che in quel caso non si visualizzi + il form x iscriversi. Invece mi servirebbe che in caso di errore il form non scompaia... qualcuno sa darmi una mano x realizzare questa cosa? grazie
pagina iscrizione.php:
<div id="MyResult" name="MyResult"></div>
<form id="form_ajax" name="MyForm" method="post" onsubmit="xmlhttpPost('iscriviti_go.php', 'MyForm', 'MyResult', 'Wait...'); return false;">
<label for=nome>
Nome:
</label>
<input type=text name=nome>
<label for=pass>
Password:
</label>
<input type=text name=pass>
<label for=pass2>
Reinserisci Password:
</label>
<input type=text name=pass2>
<input type=submit value=Iscriviti>
</form>
il form passa i dati alla pagina iscrizione_go.php:
$pass=$_POST['pass'];
$pass2=$_POST['pass2'];
$nome=$_POST['nome'];
if ($pass=$pass2)
{
INSERISCO I DATI NEL DATABASE
echo "iscrizione andata a buon fine";
}
else
{ echo "le password inserite non corrispondono"; }
Una volta che i dati sono passati visualizza all'interno del div myresult della pagina iscrizione.php il risultato della pagina iscrizione_go.php... in sostanza nel div viene scritto: Iscrizione andata a buon fine oppure "Le password inserite non corrispondono" se c'è stato qualche errore.
Lo script js è questo qua
function xmlhttpPost(strURL,formname,responsediv,responsemsg) {
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) {
// Quando pronta, visualizzo la risposta del form
updatepage(self.xmlHttpReq.responseText,responsediv);
}
else{
// In attesa della risposta del form visualizzo il msg di attesa
updatepage(responsemsg,responsediv);
}
}
self.xmlHttpReq.send(getquerystring(formname));
}
function getquerystring(formname) {
var form = document.forms[formname];
var qstr = "";
function GetElemValue(name, value) {
qstr += (qstr.length > 0 ? "&" : "")
+ escape(name).replace(/\+/g, "%2B") + "="
+ escape(value ? value : "").replace(/\+/g, "%2B");
//+ escape(value ? value : "").replace(/\n/g, "%0D");
}
var elemArray = form.elements;
for (var i = 0; i < elemArray.length; i++) {
var element = elemArray;
var elemType = element.type.toUpperCase();
var elemName = element.name;
if (elemName) {
if (elemType == "TEXT"
|| elemType == "TEXTAREA"
|| elemType == "PASSWORD"
|| elemType == "BUTTON"
|| elemType == "RESET"
|| elemType == "SUBMIT"
|| elemType == "FILE"
|| elemType == "IMAGE"
|| elemType == "HIDDEN")
GetElemValue(elemName, element.value);
else if (elemType == "CHECKBOX" && element.checked)
GetElemValue(elemName,
element.value ? element.value : "On");
else if (elemType == "RADIO" && element.checked)
GetElemValue(elemName, element.value);
else if (elemType.indexOf("SELECT") != -1)
for (var j = 0; j < element.options.length; j++) {
var option = element.options[j];
if (option.selected)
GetElemValue(elemName,
option.value ? option.value : option.text);
}
}
}
return qstr;
}
function updatepage(str,responsediv){
document.getElementById(responsediv).innerHTML = str;
}
Il mio problema è che vorrei che, invece di stamparmi la scritta "iscrizione andata a buon fine" sopra al form della pagina iscrizione.php, mi apparisse questa stessa scritta in un altra pagina che possiamo chiamare tipo centro.php. Oppure mi basterebbe che venga fuori scritto "iscrizione andata a buon fine" nella pagina iscrizione.php ma che in quel caso non si visualizzi + il form x iscriversi. Invece mi servirebbe che in caso di errore il form non scompaia... qualcuno sa darmi una mano x realizzare questa cosa? grazie