Ciao a tutti, spero di non tediarvi troppo, mi avete dato spesso grandi spunti ed anche il solo scrivere a volte mi aiuta a ragionare sul problema. Premetto che ho cercato parecchio in Internet ma con poco successo e a volte non so neppure cosa cercare.
Ho parecchie variabili restituite da una chiamata Ajax che utilizzo diverse volte nella pagina applicandoci delle operazioni matematiche. Il problema è che non riesco ad usare queste variabili globalmente ma solo all'interno della funzione. Se non ho capito male il fatto che la chiamata sia asincrona fa si di ottenere dei dati i quali però non possono diffondersi nella pagina fino ad un refresh che vada quindi a rileggerli.
La soluzione che adotto è questa:
codice:
function Attributi(){
var id_eroe = '<?php echo $_GET['id_eroe'];?>';
$.ajax({
type: "POST",
url: "db/rpg_select.php",
data: "id_eroe="+id_eroe,
dataType: "html",
tryCount : 0,
retryLimit : 3,
success: function(data){
MyData(data);
return data;
},
error: function(xhr, textStatus, errorThrown ) {
if (textStatus == 'timeout') {
this.tryCount++;
if (this.tryCount <= this.retryLimit) {
$.ajax(this);
return;
}
return;
}
if (xhr.status == 500) {
} else {
alert('Connessione fallita');
}
}
function MyData(data){
var data = jQuery.parseJSON(data);
//le mie variabili ad esempio
nome=(data.nome);
$('#nome').val(nome);
}
});
}
e successivamente richiamando la funzione MyData uso i valori restituiti.
Il problema è che questi dati li uso più volte nella pagina e più volte devo rifare la chiamata per riprenderli una volta aggiornato il database ad esempio:
codice:
function MyData(data){
var data = jQuery.parseJSON(data);
nome=(data.nome);
if(condizione > valore){
nome='';
}
$.ajax({
type: "POST",
url: "db/reset.php",
data: "id_eroe="+id_eroe+"&reset=nome",
dataType: "html",
success: function(){
Attributi(); //richiamo la funzione per aggiornare la schermata con i nuovi valori
}
});
}
In questa maniera però non funziona. Se inserisco il primo richiamo alla funzione MyData all'interno di Attributi il codice non va, mentre se lo tengo fuori allora funziona ma non so come aggiornare a schermo i mie campi all'interno della funzione.
L'alternativa è creare due funzioni con due chiamate ma non so ancora quante volte incrocerò questi dati (evitando il refresh della pagina) e sto quindi cercando la soluzione più compatta.
Spero di essermi spiegato.
Grazie mille