Problema ad elaborare dati funzione $.get

Elranius

Nuovo Utente
17 Apr 2013
11
0
1
Salve a tutti,

ho la seguente funzione:

Codice:
function IndirizzoIP(){
    var indirizzo='0.0.0.0'
   
    $.getJSON('getip.php', function(dati) {
        indirizzo=dati.ip;
        alert( dati.ip );
    });
   return indirizzo;
}
Codice:
function verifica(){
  alert( IndirizzoIP() );
}

Se richiamo la pagina getip.php direttamente da browser mi stampa correttamente {"ip":"127.0.0.1"}.

Al primo alert(dati.ip) mi esce il valore corretto quindi l'indirizzo IP della macchina che esegue lo script.
Ma l'allert della seconda funzione restituisce il valore 0.0.0.0 che è il valore inizializzato della variabile, come se la funzione $.get non riportasse il valore di dati.ip dentro alla variabile indirizzo.

Qualcuno mi sa dire dove sbaglio?
Ho bisogno di estrarre quel valore per elaborarlo poi in altre funzioni, e non solo all'interno della funzione $.get
 
Devi settare la chiamata in modo che non sia asincrona, prova cosi
Codice:
function IndirizzoIP(){
    var indirizzo='0.0.0.0';
   
    $.ajax({
        url:'getip.php',
        type: 'GET',
        dataType: 'json',
        async:false
    }).done(function(dati) {
        indirizzo=dati.ip;
        alert(indirizzo); //doppio alert quando chiami verifica(), puoi anche toglierlo
    });
   return indirizzo;
}

function  verifica(){
  alert( IndirizzoIP() );
  }

Comunque verifica la trovo inutile, puoi benissimo mettere l'alert nella stessa funzione invece di ritornare con l'indirizzo
 
Grazie per la risposta, provo quanto prima.

Per quanto riguarda il doppio allert sono consapevole che è inutile, ma volevo solo essere più chiaro nell'esporre il problema facendo vedere che il dato a me serve in funzioni esterne a quella $.get.
 

Discussioni simili