Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    come utilizzare 2 funzioni ajax?

    salve a tutti...

    ho questo problema:

    ho 2 funzioni ajax molto semplici:
    codice:
    function caricaCampiAggiunti()
    {	
    	var postData = "";
    	// branch for native XMLHttpRequest object
        if (window.XMLHttpRequest) {
            richiesta = new XMLHttpRequest();
    		richiesta.open("POST", "visualizza_campi.asp", true);
      		richiesta.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
     		richiesta.setRequestHeader("Content-length", postData.length);
      		richiesta.setRequestHeader("Connection", "close");
    		
            richiesta.onreadystatechange = Response_campiAggiunti;
            richiesta.send(postData);
        // branch for IE/Windows ActiveX version
        } else if (window.ActiveXObject) {
            richiesta = new ActiveXObject("Microsoft.XMLHTTP");
    		//alert('sono entrato nella funzione Microsoft')
            if (richiesta) {
    			richiesta.open("POST", "visualizza_campi.asp", true);
    			richiesta.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    			richiesta.setRequestHeader("Content-length", postData.length);
    			richiesta.setRequestHeader("Connection", "close");
    			
    			richiesta.onreadystatechange = Response_campiAggiunti;
    			richiesta.send(postData);
    
            }
        }
    }
    //risposta in html che piazzo nel div
    function Response_campiAggiunti() {
    	//alert('sono entrato nella funzione Response')
      if (richiesta.readyState == 4) {
        if(richiesta.status == 200){
    	  document.getElementById('carrello').innerHTML = richiesta.responseText;
        } else {
          var results = "C'è stato un errore. Contattare il supporto";
          document.getElementById('carrello').innerHTML = results; 
        }
      }
    }
    e l'altra molto praticamente uguale:

    codice:
    function gestisciCarrello(lista)
    {	
    
    	// branch for native XMLHttpRequest object
        if (window.XMLHttpRequest) {
            richiesta = new XMLHttpRequest();
    		//alert('sono entrato nella funzione normale')
    		var postData = "?"+lista;
    		richiesta.open("POST", "aggiungi_campo.asp", true);
      		richiesta.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
     		richiesta.setRequestHeader("Content-length", postData.length);
      		richiesta.setRequestHeader("Connection", "close");
    		
            richiesta.onreadystatechange = Response;
            richiesta.send(postData);
    
        // branch for IE/Windows ActiveX version
        } else if (window.ActiveXObject) {
            richiesta = new ActiveXObject("Microsoft.XMLHTTP");
    		//alert('sono entrato nella funzione Microsoft')
            if (richiesta) {
    			var postData = "?"+lista;
    			richiesta.open("POST", "aggiungi_campo.asp", true);
    			richiesta.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    			richiesta.setRequestHeader("Content-length", postData.length);
    			richiesta.setRequestHeader("Connection", "close");
    			
    			richiesta.onreadystatechange = Response;
    			richiesta.send(postData);
    
            }
        }
    }
    //risposta in html che piazzo nel div
    function Response() {
    	//alert('sono entrato nella funzione Response')
      if (richiesta.readyState == 4) {
        if(richiesta.status == 200){
    	  document.getElementById('form').innerHTML = richiesta.responseText;
        } else {
          var results = "C'è stato un errore. Contattare il supporto";
          document.getElementById('form').innerHTML = results; 
        }
      }
    }

    ora il mio problema è: come faccio a far partire la seconda dopo aver eseguito la prima? cioè il giro dovrebbe essere:
    - onload eseguo la caricaCampiAggiunti();
    - faccio una serie di operazioni ed eseguo gestisciCarrello(lista);
    - quando termina il gestisciCarrello, deve essere eseguita nuovamente la prima per aggiornare il div dei campi aggiunti con quelli appena aggiunti...

    non so se mi sono spiegato, ma, visto che non ho più il reload della pagina, non riesco ad aggiornare il carrello (un div presente nella pagina) una volta aggiunti articoli al suo interno.

    grazie a tutti per l'aiuto!

    saluti

  2. #2
    Ciao.
    Non ho la possibilità di provare ciò che ti sto suggerendo quindi prendilo con le pinze...
    Dato che sono funzioni puoi mettere il richiamo dentro un costrutto condizionale... il normale corso di Javascript è quindi obbligato ad aspettare che la funzione torni...
    Ad esempio:

    if(tuaFunzione()==true){
    tuaSecondaFunzione();
    }else alert('ociò.. si è verificato un errore!');

    Ok?
    Adesso che scrivo però, mi è balzato alla testa che forse, anzhe non mettendo l'if, javascript esegue prima tuaFunzione() e quando ha finito passa al resto...
    Fai delle piccole prove e facci sapere!
    Ciao, buona giornata

    MrBinding

  3. #3
    si, effettivamente anche senza if funziona...

    grazie mille!

    ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.