caricare json in variabile

Devo fare qualcosa di molto semplice, ma non sembra essere un modo semplice per farlo, per quanto posso dire. Voglio solo caricare i dati JSON da una fonte remota e archiviarli in una variabile Javascript globale usando jQuery. Ecco cosa ho:

var my_json; $.getJSON(my_url, function(json) { var my_json = json; }); 

La variabile my_json rimane indefinita. Penso che questo sia chiaramente un problema di portata. Mi sembra che il metodo $ .getJSON debba restituire JSON, ma restituisce un object XMLHttpRequest. Se faccio questo:

 request = $.getJSON(my_url); my_json = request.responseText.evalJSON(); 

Questo non funziona perché fino a readystate == 4, il responsext rimane nullo. Sembra che tu debba usare la funzione di callback per restituire il responsetext, dal momento che si triggers con successo.

Non può essere così difficile! Destra?

Solutions Collecting From Web of "caricare json in variabile"

Questo lo farà:

 var json = (function () { var json = null; $.ajax({ 'async': false, 'global': false, 'url': my_url, 'dataType': "json", 'success': function (data) { json = data; } }); return json; })(); 

Il problema principale è che $.getJSON verrà eseguito in modo asincrono, quindi il tuo javascript passerà oltre l’espressione che lo invoca prima ancora che il suo callback abbia success , quindi non ci sono garanzie che la tua variabile catturi qualsiasi dato.

Nota in particolare 'async': false opzione 'async': false nella chiamata ajax precedente. Il manuale dice:

Per impostazione predefinita, tutte le richieste vengono inviate in modo asincrono (ad esempio, questa opzione è impostata su true per impostazione predefinita). Se hai bisogno di richieste sincrone, imposta questa opzione su false. Si noti che le richieste sincrone possono bloccare temporaneamente il browser, disabilitando tutte le azioni mentre la richiesta è triggers.

il bit di codice dovrebbe contenere:

 var my_json; $.getJSON(my_url, function(json) { my_json = json; }); 
  $.get("http://localhost:8080/HIS_API/rest/MriSpecimen/getMaxSpecimenID", function(data, status){ alert("Data: " + data + "\nStatus: " + status); $("#currSpecID").val(data); }); 

inserisci la descrizione dell'immagine qui inserisci la descrizione dell'immagine qui

 var itens = null; $.getJSON("yourfile.json", function(data) { itens = data; itens.forEach(function(item) { console.log(item); }); }); console.log(itens);