Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    170

    Ricarica combo con ajax

    Ho un form in cui l'utente inserisce dei valori nelle text e va a scegliere delle opzioni da delle combo, ed alcune di queste combo ricaricano la pagina che effettua delle query con i valori scelti.
    Es: ho una text prezzo e 2 combo, regione e provincia: l'utente inserisce il prezzo, sceglie la regione e la pagina si ricarica facendo una query con la regione scelta e caricando dinamicamente la combo provincia.
    Come faccio a ricaricare solo la seconda combo, senza ricaricare tutta la pagina e quindi senza perdere i dati inseriti dall'utente con ajax?!?!
    Vi sarei estremamente grato se mi poteste aiutare.
    Thanks

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    170
    Cercando tra i post inseriti ho trovato questo codice:
    Codice PHP:
    function RSobj() {
      var 
    HTTPobj;
      if (
    window.ActiveXObjectHTTPobj = new ActiveXObject("MSXML2.XMLHTTP");
      else 
    HTTPobj = new XMLHttpRequest();
      return 
    HTTPobj;
    }

    function 
    ajaxGETin(urlgetcompinna) {
        var 
    HTTPobj = new RSobj();
        
    HTTPobj.open("GET"urlgettrue);
        
    HTTPobj.send(null);
        
    HTTPobj.onreadystatechange = function() {
            if (
    HTTPobj.readyState == 4) {
              if (
    inna == 1document.getElementById(comp).innerHTML HTTPobj.responseText;
              else if (
    inna == 2document.getElementById(comp).innerHTML += HTTPobj.responseText;
              if (
    document.ActiveXObjectHTTPobj.abort();
            }
        }
    }

    /*function ajaxPOSTxx(urlpost, comp) {
        var HTTPobj = new RSobj();
        var postData = "?testo=ciao";
        HTTPobj.open("POST", urlpost, true);
        
        HTTPobj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        HTTPobj.setRequestHeader("Content-length", postData.length);
        HTTPobj.setRequestHeader("Connection", "close");

        HTTPobj.onreadystatechange = function() {
              if (HTTPobj.readyState == 4) {
              if (HTTPobj.responseText == "OK") alert('ok');
              else if (HTTPobj.responseText == "LOGIN") alert('please login');
              else alert(HTTPobj.responseText);
              //document.getElementById(comp).innerHTML = HTTPobj.responseText;
              if (document.ActiveXObject) HTTPobj.abort();
            }
        }
      HTTPobj.send(postData);
    }*/




    /** Oggetto "Remote Scripting Form"
      * crea un form per inviare dati attraverso l'oggeto HTTP
      * param id: l'id del form
      */
    var RSForm = function (id) {

        
    // Imposta la variabile di classe form come il form passato
        
    this.form document.getElementById(id);

        
    // Prende method e action del forum
        
    this.method this.form.method;
        
    this.action this.form.action;

        
    // Crea una variabile nulla per l'oggetto HTTP
        
    this.HTTPobj null;

        
    // Crea un metodo nullo per il cambiamento di stato dell'oggetto HTTP
        
    this.onreadystatechange = function() { }

    }

    /** Metodo send dell'oggetto RSForm
      * Deve essere attivato all'onSubmit del form, e si occupa di inviare i dati
      */
    RSForm.prototype.send = function() {

        
    // Riferisce la variabile form alla variabile di classe form
        
    var form this.form;

        
    // Crea l'oggetto HTTP
        
    this.HTTPobj RSobj();
        var 
    HTTPobj this.HTTPobj;

        
    // Associa il metodo onreadystatechange della classe a quello dell'oggetto HTTP
        
    HTTPobj.onreadystatechange this.onreadystatechange;

        
    // Crea una variabile vuota con i dati da passare
        
    var data "";

        
    // Per ogni elemento del form
        
    for (var i=0form.elements.lengthi++) {

            
    // Se il tipo è diverso da submit
            
    if (form.elements[i].type != "submit") {

                
    // Se non è il primo valore aggiunge la & per concatenare i valori
                
    if (!= 0) { data += "&"; }

                
    // Aggiugne ai dati "nome=valore" del campo
                
    data += form.elements[i].name +"="form.elements[i].value;

            }

        }

        
    // Invia i dati alla pagina tramite il metodo specificato nel form
        
    HTTPobj.open(this.methodthis.actiontrue);
          
    HTTPobj.setRequestHeader('Content-Type''application/x-www-form-urlencoded');
        
    HTTPobj.setRequestHeader('Content-length'data.length);
        
    HTTPobj.setRequestHeader('Connection''close');
        
    HTTPobj.send(data);


    Nel sito dove è stato utilizzato viene richiamato al select di una combo, proprio come serve a me, ed io l'ho integrato nella mia pagina in questo modo:
    <select onchange="ajaxGETin('cerca.php?id_stato='+this.opt ions[this.selectedIndex].value, 'componenteajax', 1)" name="">
    <option></option>
    <option value="1">primo</option>
    <option value="2">secondo</option>
    <option value="3">terzo</option>
    </select>
    Nell'esempio viene creata la combo dal nulla al posto di questo:
    <div id="componenteajax">seleziona uno stato!</div>
    Il mio problema è che io la combo già ce l'ho, la devo solo ricaricare al select della prima combo, però mettendo dentro il div la suddetta combo mi ricarica tutto il sito dentro la pagina!
    Dove sbaglio!?!?

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    170
    Nessuno mi sa dare una mano gentilmente?

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    :master: se ne è parlato talmente tanto che...

    un link può essere questo
    http://forum.html.it/forum/showthrea...78#post9763778

    Pietro

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    170

    Thanks

    Grazie pietro09, avevo fatto una ricerca prima ma questo link mi era sfuggito!
    Comunque ieri ho provato ad adattarlo al mio caso e dopo tanto sono riuscito a farlo funzionare, non so ancora come, ma funziona
    Adesso cerco di rifinirlo meglio, o almeno ci provo!
    Grazie ancora

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.