read leer create jquery json getjson

jquery - create - leer json



cargar json en variable (4)

Tengo que hacer algo muy simple, pero no parece ser una manera fácil de hacer esto, hasta donde yo sé. Solo quiero cargar datos JSON desde una fuente remota y almacenarlos en una variable global de Javascript usando jQuery. Esto es lo que tengo:

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

La variable my_json permanece indefinida. Creo que esto es claramente un problema de alcance. Me parece que el método $ .getJSON debe devolver JSON, pero devuelve un objeto XMLHttpRequest. Si hago esto:

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

Eso no funciona porque hasta el estado de lista == 4, el texto de respuesta permanece nulo. Parece que tiene que usar la función de devolución de llamada para devolver el texto de respuesta, ya que se dispara en caso de éxito.

¡No puede ser tan difícil! ¿Derecha?


El bit de código debe leer:

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


Esto lo hará:

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

El problema principal es que $.getJSON se ejecutará de forma asíncrona, por lo que su Javascript avanzará más allá de la expresión que lo invoca incluso antes de que su devolución de llamada success dispare, por lo que no hay garantías de que su variable capture datos.

Tenga en cuenta en particular la opción ''async'': false en la llamada ajax anterior. El manual dice:

Por defecto, todas las solicitudes se envían de forma asíncrona (es decir, se establece en verdadero de manera predeterminada). Si necesita solicitudes sincrónicas, establezca esta opción en falso. Tenga en cuenta que las solicitudes sincrónicas pueden bloquear temporalmente el navegador, deshabilitando cualquier acción mientras la solicitud está activa.


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

<html> <head> <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script> </head> <body> </body> </html>


<input class="pull-right" id="currSpecID" name="currSpecID" value=""> $.get("http://localhost:8080/HIS_API/rest/MriSpecimen/getMaxSpecimenID", function(data, status){ alert("Data: " + data + "/nStatus: " + status); $("#currSpecID").val(data); });