Tengo que hacer algo muy simple, pero parece que no hay una manera fácil de hacerlo, hasta donde yo sé. Solo quiero cargar datos JSON desde una fuente remota y almacenarlos en una variable global de Javascript usando jQuery. Aquí es lo que tengo:carga json en la variable
var my_json;
$.getJSON(my_url, function(json) {
var my_json = json;
});
El my_json variable permanece indefinido. 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();
que no funciona porque hasta el == readystate 4, el responseText sigue siendo nula. 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?
solo para aclarar en mi beneficio: $ .getJSON nunca es una buena opción para las solicitudes de estilo sincrónico, incluso si devuelvo datos a mi variable durante la devolución de llamada exitosa. – user1026169
+1 para obtener información relacionada, pero ¿por qué está haciendo json variable null al inicio de la función. – Manoj
@Manoj Hay 2 razones [1] para que este bloque esté dentro de un método y se llame varias veces. Por lo tanto, esto actualizaría la variable json. Pero si la solicitud de ajax actualizará esto de todos modos ¿cuál es el punto? Bueno, eso es porque ... [2] esta es una convención de codificación en caso de que la solicitud ajax falle, entonces el usuario puede probar si json es nulo. Si es así, entonces se puede suponer que la solicitud ajax falló –