Avere qualche problema nel farlo funzionare, in particolare con $ .getJSON (). Voglio racchiudere la funzione getJSON da jQuery in una funzione Javascript in questo modo:
function reload_data() {
$.getJSON("data/source", function(data) {
$.d = data;
});
}
Ma quando chiamo reload_data () non esegue la funzione jQuery all'interno. Qualche idea?
risposte:
3 per risposta № 1Non ci stai dicendo abbastanza, farò solo una supposizione!
Se si chiama questa funzione e quindi si verifica immediatamente $ .d per i risultati, non funzionerà perché non si concede il tempo per il asincrono Richiesta AJAX per completare ...
reload_data();
alert($.d); // What?! It"s not displaying the updated results?!
Dovrai utilizzare una struttura di callback, come jQuery, per farlo funzionare ...
reload_data(function() {
alert($.d);
});
function reload_data(func) {
$.getJSON("data/source", function(data) {
$.d = data;
//Execute the callback, now that this functions job is done
if(func)
func();
});
}
2 per risposta № 2
Metti un avviso nella funzione per sapere che è stato chiamato.
e un tentativo di aggirare la chiamata jQuery per vedere se c'è un errore
function reload_data() {
alert("reload_data start");
try{
$.getJSON("data/source", function(data) {
$.d = data;
});
}
catch (ex){
alert ("error in jQuery call:" + ex)
}
}
0 per risposta № 3
Grazie per l'aiuto a tutti, ma la soluzionein realtà era davvero semplice. Era solo una questione di sincronizzazione. La pagina si stava ricaricando prima che i dati JSON venissero ricaricati, quindi è per questo che non stavo vedendo un errore.