|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Jun 2010
Messaggi: 13
|
[JAVASCRIPT]:muro: Doppia connessione XMLHttpRequest()
VI PREGO, abbiate pietà di me, aiutate questa povera ragazza che legge questo codice da ormai 1 settimana giorno e notte! Qualche buon'anima che si offre,sono disposta anche a telafonare se non avete voglia di scrivere! *_*
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: .tpl Codice:
<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); } |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Ciao, hai provato a NON usare una variabile globale per salvare l'ogetto httprequest?
|
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Jan 2008
Città: roma
Messaggi: 296
|
con tante librerie pronte all'uso e collaudate ritengo sia controproducente utilizzare codice fai da te ( a meno che tu nn sia un esperto )
Per le richieste ajax ti posso consigliare dojo che è molto semplice da usare: Codice:
function o(){ dojo.xhrGet( { url: "/url?xx", handleAs: "json|text|xml ...", timeout: 5000, load: function(response, ioArgs) { // TODO onload alert(response); return response; }, error: function(response, ioArgs) { //TODO return response; } }); }
__________________
Acer 5940G{Intel Core i7 Q720 Quadri motore; 8Gb DDR3; ATI Radeon HD 4650 1024MB; 500Gb hdd} |
![]() |
![]() |
![]() |
#4 |
Member
Iscritto dal: Nov 2003
Messaggi: 120
|
ti consiglio di debuggarlo lato client con firebug
__________________
ho fatto affari con: pyp, fedelover, Kuccy, casacup(il migliore ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:48.