• User

    Si, uso già firebug ma solo per controllare le chiamate asincrone e le risposte del server.
    Sinceramente non so co me si fa a debuggare il Javascript :mmm:

    Grazie
    Nicola


  • User Attivo

    Se proprio non ne vieni a capo,
    ti consiglio di informarti meglio sulle potenzialità e sull'utilizzo di firebug.

    Comunque, sempre per FF,
    ci sono altre extension per il debug di codice Javascript.

    Ciao


  • User Attivo

    Ciao nicogaglia,
    mi è venuta in mente una soluzione.

    Purtroppo non so dirti perchè si verifica quel problema, ma per ovviare potresti salvarti lo stato dei vari componenti che hai sulla pagina prima di eseguire la chiamata e riutilizzarli per ri-settare li stessi componenti successivamente alla chiamata ajax.

    Ciao


  • User

    Ci ho pensato....
    ci provo e ti faccio sapere. 🙂

    Grazie
    Nicola


  • User

    Ehm...
    scusa la mia ignoranza ma... a livello di codice tu come faresti?
    Mi fai un esempiO?:?


  • User Attivo

    Ciao,
    io prevederei delle variabili a livello di pagina e le valorizzerei prima di ogni chiamata ajax.

    ES:
    [PHP]
    var provincia = null;
    var comune = null;
    var cap = null;

    $(document).ready(
    .................
    )
    [/PHP]

    Prima di richiedere i comuni valorizzi la variabile provincia con la provincia scelta e prima di richiedere il cap salvi il valore scelto del comune nella variabile comune.

    Spero di essere stato chiaro.
    Ciao


  • User

    Rieccomi alla carica...
    purtroppo non sono riuscito a fare come mi hai indicato, Mirko.
    Vado per ordine....

    • Seleziono la provincia dalla prima combo.
      Mi fa una chiamata alla checkcomune.php e gli passa come parametri:
      comune=-1;
      provincia=72; ad esempio (value della provincia selezionata)
      La check comune mi restituisce giustamente l'elenco di tutti i comuni senza nessuno già selezionato (giustamente perchè -1 non corrisponde a nessuno dei values dei comuni.
    • Seleziono il comune dalla seconda combo:
      Mi richiama alla checkcap.php passandogli come parametro il codice del comune:
      comune=72012; ad esempio
      Correttamente mi restituisce il cap corrispondente al comune selezionato, ma la combo dei comuni mi mostra sempre il primo comune della lista.

    Dovrei quindi fare in modo di ripassare il parametro codice comune corretto alla checkcomune... ma come lo intercetto, al caricamento della pagina?

    Grazie
    Nicola


  • User Attivo

    Ciao,
    cerco di portarti parte dell'esempio:

    [php]

    //variabili globali
    var prov_glob= null;
    var com_glob= null;
    var cap_glob= null;

    $("#provincia").change(function() {
    //SALVO IL VALORE SCELTO PER LA PROVINCIA
    prov_glob = $("#provincia").val();

    var prov = $("#provincia").val();
    var comune = $("#citta").val();
    
    $.ajax({  
        type: "POST",  
         url: "checkcomune.php",  
        data: "provincia="+ prov + "&comune="+ comune,  
        success: function(resp){  
       
        $("#citta").ajaxComplete(function(event, request, settings){ 
    
                $(this).html(resp);
       
           });
    
             } 
       
    });
    

    }); //fine provincia.change
    [/php]
    E poi la stessa cosa quando si scatena l'evento onchange sui comuni.
    Finita la function che gestisce la scelta dei comuni riassegni alla select dei comuni il valore salvato in com_glob.

    Ciao


  • User

    Niente da fare.
    [...]

    Grazie
    Nicola


  • User Attivo

    Io l'ho fatto usando il plugin jquery: linkedSelect


  • User

    Ciao,
    ho provato, i risultati non sono proprio come mi aspettavo, è di una lentezza impressionante (forse per la grossa mole di dati da trattare) inoltre mi da un popup con un errore js.

    Grazie
    Nicola


  • User Attivo

    A me funziona benissimo, dipende come l'hai applicato, io ho tre select, la prima delle regioni è normale, selezionata la regione presento le provincie e poi i comuni:

    
    $(document).ready(function(){
    $('#provincia').linkedSelect('ajaxsave.php?ps=comune','#comune',{firstOption: 'Selezionare il comune', loadingText: 'Attendere...'});
    $('#regione').linkedSelect('ajaxsave.php?ps=provincia','#provincia',{firstOption: 'Selezionare la provincia', loadingText: 'Attendere...'});
    });
    
    

    ajaxsave.php mi torna i dati necessari.


  • User

    Ah c'è proprio il metodo linkedselect...
    Io invece ho cercato quella parola su google e ho trovato altro... che ho provato... con tutte le conseguenze che ti ho descritto.

    Ti sarei grato se mi posteresti il link alla libreria.

    Grazie mille
    Nicola


  • User

    Ho provato anche a cercarla tra i plugin sul sito ufficiale ma non me lo ha trovato 😞


  • User Attivo

    Effettivamente il sito non c'è più, ti posto il codice di jquery.linkedselect.js:

    
    (function($){
      $.fn.linkedSelect = function(url,destination,params) {
          var params = $.extend({
             firstOption : 'Please Select',
             loadingText : 'Loading...'
          },params);
          var $dest = $(destination);
          return this.each(function(){
            $(this).bind('change', function() {
                var $$ = $(this);
                $dest.attr('disabled','false')
           .append('<option value="">' +params.loadingText+ '</option>')
           .ajaxStart(function(){
            $$.show();
                });
                $.getJSON(url,{str: $$.val() }, function(j){
                   if (j.length > 0) {
                      var options = '<option value="">' +params.firstOption+ '</option>';
                      for (var i = 0; i < j.length; i++) {
                         options += '<option value="' + j*.optionValue + '">' + j*.optionDisplay + '</option>';
                      }
                   }
                  $dest.removeAttr('disabled')
            .html(options)
            .find('option:first')
            .attr('selected', 'selected');
                });
             });
          });
       };
    })(jQuery);
    
    

  • User

    Grazie mille.
    Ora provo... al max ti chiederò delle dritte sull'utilizzo.

    Dovrò modificare il js leggermente perchè in realtà io ho due combo e una textbox il cui valore è univocamente definito dalla scelta della seconda combo.

    Ti farò sapere.

    Grazie
    Nicola


  • User

    Ciao,
    finalmente ho trovato 5 minuti per provare questo codice.

    Sorge la prima domanda: in che modo la funzione (nel tuo caso ajaxsave.php) ti restituisce i valori?

    Grazie
    Nicola


  • User

    Ciao ho risolto,
    ho semplicemente modificato il js che mi hai postato adattandolo all'oggetto JSON che il mio script emette.


  • User

    Faccio un attimo il punto della situazione:
    ho brillantemente risolto il problema delle due linked select (seleziona provincia --> elenco province).
    Ora vorrei che selezionando un comune, nella textbox successiva vorrei visualizzare il cap, che è in corrispondenza 1 a 1 con il comune selezionato.
    Utilizzando la stessa linkedselect.js riesco a ricavarmi, dalla checkcap.php, il cap corretto attraverso un json message, ad esempio
    [{"txtValue" : "60020"}]Mi manca l'ultimo pezzettino... ovvero riuscire a visualizzarlo nella textbox.Come posso fare?


  • User Attivo

    Ciao,
    dovrebbe essere:

    [php]
    document.getElementById(idTextbox).value = il cap;
    [/php]Con JQuery:

    [php]
    $('#' + idTextbox).val(il cap);
    [/php]Ciao