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:
Funzioni chiamanti:
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.
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.