callback functions con chiamate multiple

  • Creatore Discussione Creatore Discussione ANS1966
  • Data di inizio Data di inizio

ANS1966

Nuovo Utente
2 Gen 2025
1
0
1
Buon giorno a tutti!

sto avendo problemi con una mia funzione (JQuery plugin + Ajax) che si avvale di una callback function perché non riesco a risolvere un problema di chiamate multiple della stessa funzione. Allego del codice come esempio:

JavaScript:
$.fn.GetData = function(xURL, callback) { 
     

            var xmlhttp=false;
            var data;
            var response;
            
                        
                  
            if (!xmlhttp && typeof XMLHttpRequest!='undefined')
            {
                try { xmlhttp = new XMLHttpRequest(); }
                catch (e) { xmlhttp = false; }
            }
            if (!xmlhttp && window.createRequest)
            {
                try { xmlhttp = window.createRequest(); }
                catch (e) { xmlhttp = false; }
            }

            xmlhttp.onreadystatechange=function()
            {
                if (xmlhttp.readyState===4 && xmlhttp.status===200)
                {
          
          data=xmlhttp.responseText;
          
          
           try {obj=JSON.parse(data);} catch (e) { alert(e.message); return }  //call back si avvia solo se object
          
          
          if (typeof callback === "function") {
                 //apply() sets the meaning of "this" in the callback
                var obj; 
                obj=JSON.parse(data); callback.apply(xmlhttp);  
                
                                              }
                } 
            }
            xmlhttp.open("GET", xURL, true);
            xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
            xmlhttp.send(null);             

   };

Funzioni chiamanti:


JavaScript:
$("").GetData(xURL, function () { // true serve per avviare una sola volta
   try {JSON.parse(this.responseText); resp  = this.responseText; SetValues("Date", resp,""); } catch(err) {  //per creare errore gestito se database vuoto
   $().AvvisiAlert(0, err.message, user, passw); // attiva Alert
    }  
   
   });

//-------------------------
var xURL = "characteristicsFind.php?funzione="+funzione+"&server="+server+"&user="+user+"&passw="+passw+"&trova="+Datrovare;
      
$("").GetData(xURL, function () {  // true serve per avviare una sola volta
try {JSON.parse(this.responseText); resp  = this.responseText;  SetValues("trova", resp);  } catch(err) {  //per creare errore gestito se database vuoto
$().AvvisiAlert(0, err.message, user, passw);  }// attiva Alert                                                                                           
        }); 

//--------------------------
var xURL = "characteristics.php?funzione="+funzione+"&server="+server+"&user="+user+"&passw="+passw;
    

        var attendere    = '<option value="-1">Attendere...</option>';

        $("select#"+form_tag).html(attendere);
        $("select#"+form_tag).attr("disabled", "disabled");
        
              
        //GetData("select#"+form_tag, xURL);
        $("").GetData(xURL, function () { 
        try {JSON.parse(this.responseText); resp  = this.responseText;  SetValues("select#"+form_tag, resp);  } catch(err) {
        $().AvvisiAlert(0, err.message, user, passw);  }// attiva Alert
                                                                                            
        });

Ho cercato di risolvere da solo cercando tutto il possibile ma purtroppo non riesco a risolvere da solo e per questo motivo chiedo il vostro aiuto.

L'obbiettivo è che la funzione chiamante non ripete la chiamata più volte (la prima volta ricevo il contenuto object corretto mentre nelle successive chiamate indesiderate ottengo come risposta un valore undefined è di conseguenza l'errore.

Grazie per qualsiasi aiuto mi possiate dare.
 

Discussioni simili