Abr 052013
 
Artículo Javascript

En otro artículo hemo visto cómo solicitar al servidor un fichero JSON utilizando la llamada jQuery “getJSON”.

Esta llamada se ejecuta en modo asíncrono, por lo que los datos leídos no están disponibles para el script que realiza la llamada a getJSON inmediatamente después de realizarla, sino algo más tarde.

En este artículo vamos a ver la manera de solucionar este inconveniente.

(Read this post in english)

Sustituir la llamada a $.getJSON por una llamada a $.ajax

La función getJSON en jQuery esta implementada como una llamada a la función “ajax”. Así, una llamada a jQuery.getJSON realizada por nuestro script de la forma:

$.getJSON(url, data, function(json){ 
    //Proceso de los datos recibidos
});

es procesada internamente mediante la ejecución de una llamada a jQuery.ajax de la forma:

$.ajax({ 
    url: url, 
    dataType: 'json', 
    data: data, 
    success: function(json){ 
        //Proceso de los datos recibidos
    } 
});

Pero la función jQuery.ajax permite otros parámetros. Entre ellos, es posible especificar si la llamada debe ejecutarse de manera síncrona añadiendo el parámetro “async: false”.

Así, para que nuestra llamada a getJSON se ejecute de manera síncrona, basta con sustituirla por una llamada a “ajax” de la forma:

$.ajax({ 
    url: url, 
    dataType: 'json', 
    data: data, 
    async: false, 
    success: function(json){ 
        //Proceso de los datos recibidos
    } 
});

 Ventajas adicionales de utilizar $.ajax

Además de permitir la ejecución síncrona de la lectura del fichero JSON, la función jQuery.ajax tiene otra gran ventaja, porque permite especificar también una función que se ejecuta si se produce un error en la descarga del fichero o en el formato de los datos recibidos, mientras que la función getJSON se limita a fallar silenciosamente. Basta con añadir a la llamada el parámetro “error: function( jqXHR, textStatus, errorThrown )) {}”

Referencias:

 Publicado por en 9:43 am

 Deja un comentario

(requerido)

(requerido)