|
|||||||
|
|
|
![]() |
|
|
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: 05:31.



















