Salve sto costruendo un'applicazione web in in php e javascript e sono di fronte ad un problemaccio che mi porto dietro da ben una settimana.
è un sito di e-commence e ho a che fare con la pagina FAI ORDINE che funziona in questo modo:
1-inserisci la password
2-inserisci codice articolo
3-quantita
4-PREMI SU AGGIUNGI e dinamicamente viene calcolato il prezzo totale e stampato in un nodo.
5-cliccando su ORDINA parte l'ordine e vorrei visualizzare ancora nella stessa pagina un altro nodo con scritto: CODICE EFFETTUATO CON SUCCESSO! Codice ordine, quantità e prezzo totale.
il problema è questo: quando premo su aggiungi, tutto viene sisualizzato correttamnte, ma nella seconda richiesta di connessione HTTP ( con ORDINA) ciò che visualizzo non è quello che voglio. vi mostro il codice:
Sembra che vadano ad accavallarsi le 2 richieste e di conseguenza quando a richiamare per la seconda volta objHTTP.responseText va tutto in palla...!!!!!!!!!!!!!
perchè????????????
è un sito di e-commence e ho a che fare con la pagina FAI ORDINE che funziona in questo modo:
1-inserisci la password
2-inserisci codice articolo
3-quantita
4-PREMI SU AGGIUNGI e dinamicamente viene calcolato il prezzo totale e stampato in un nodo.
5-cliccando su ORDINA parte l'ordine e vorrei visualizzare ancora nella stessa pagina un altro nodo con scritto: CODICE EFFETTUATO CON SUCCESSO! Codice ordine, quantità e prezzo totale.
il problema è questo: quando premo su aggiungi, tutto viene sisualizzato correttamnte, ma nella seconda richiesta di connessione HTTP ( con ORDINA) ciò che visualizzo non è quello che voglio. vi mostro il codice:
HTML:
<input type="button" name="Aggiungi" value="Aggiungi" onClick="prezzo()">
<input type="button" name="Aggiungi2" value="Annulla" onClick="rimuovi()">
..
<label></label>
<p align="center">Descrizione elementi ordinati </p>
......
<input type="button" name="invia" value="Ordina" onClick="ordina()">
Codice:
function prezzo() {
objHTTP=XMLHttp();
if (objHTTP!=null) {
//apertura della connessione HTTP
codice=document.getElementById("codiceProdotto");
objHTTP.onreadystatechange=aggiungi;
objHTTP.open("GET","GestioneGET.php?menu=prendiPrezzo&codice="+escape(codice.value), true);
objHTTP.send(null);
aggiungi();
}
else
{
alert("Your browser does not support XMLHTTP.");
}
}
function XMLHttp()
{
var xmlhttp = null;
if (window.XMLHttpRequest)
{// code for IE7, Firefox, Opera, etc.
xmlhttp=new XMLHttpRequest();
http_request.overrideMimeType('text/xml');
}
else
if (window.ActiveXObject)
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
alert("Your browser does not support XMLHTTP.");
}
return xmlhttp
}
function set(cod,prezz,quan) {
objHTTP = XMLHttp();
//apertura della connessione HTTP
passw=document.getElementById("pass");
objHTTP.open("GET","GestioneGET.php?menu=assegnaOrdine&cod="+escape(cod)+"&prezzo="+escape(prezz)+"&quantita="+escape(quan), true);
objHTTP.send(null);
objHTTP.setRequestHeader("connection", "close");
}
function aggiungi()
{
if (objHTTP.readyState == 4 )
{
if (objHTTP.status == 200)
{
agg(objHTTP.responseText); // funzione funzionante che non vi presento
}
else {
alert('C\' è un problema con la rischiesta.');
}
}
}
function ordina()
{
var l=0;
if (document.formFaiOrdine.pass.value.length == 0)
{
alert("Il campo password deve contenere almeno un carattere");
document.formFaiOrdine.pass.focus();
return;
}
while(l<i)
{
cod=articoli [l];
prezz=prezzi [l];
quan=quantita [l];
set(cod,prezz,quan);
l++;
}
if (confirm("Confermare i dati inseriti ?"))
{
passw=document.getElementById("pass").value;
quantita=document.getElementById("quantita").value;
totale=document.getElementById("totale").value;
objHTTP=new XMLHttpRequest();
if (objHTTP!=null)
{
var params=("menu=formFaiOrdine&pass="+escape(passw)+"&qua="+escape(quantita)+"&totale="+escape(totale));
objHTTP.open("post", "GestionePOST.php", true);
objHTTP.setRequestHeader("content-type", "application/x-www-form-urlencoded");
objHTTP.setRequestHeader("Content-length", params.length);
objHTTP.onreadystatechange=ordeffett(objHTTP, quantita,totale);
objHTTP.send(params);
}
}
}
function ordeffett(objHTTP,quantita,totale) // sembra che non entri qui dentro, forse non
{ //supera la prima if
if (objHTTP.readyState == 4)
{
if (objHTTP.status == 200)
{
cordine=objHTTP.responseText;
alert(cordine); // non stampa nulla
successo(cordine,quantita,totale);}
}
else {
alert('C\' è un problema con la rischiesta.');
}
}
}
function successo(cordine,quantita,totale)
{
frase = document.createTextNode("ORDINE EFFETTUATO CON SUCCESSO. Codice ordine:"+cordine+"\n quantita:"+quantita+"\n prezzo totale:"+totale);
// poi lo attacchiamo al nodo di riferimento
document.getElementById("content2").appendChild(frase);
}
Sembra che vadano ad accavallarsi le 2 richieste e di conseguenza quando a richiamare per la seconda volta objHTTP.responseText va tutto in palla...!!!!!!!!!!!!!
perchè????????????