read leer from example jquery asynchronous getjson

jquery - leer - ¿Es posible establecer una llamada async: false a $.getJSON?



leer json jquery (6)

Ambas respuestas son incorrectas. Usted puede. Tienes que llamar

$.ajaxSetup({ async: false });

antes de tu llamada a jason ajax. Y puede configurarlo en true después de volver a llamar (si hay otros usos de ajax en la página si desea que sean asincrónicos)

¿Es posible establecer async: false cuando se llama $.getJSON() para que la llamada bloquee en lugar de ser asincrónica?


Creo que ambos tienen razón. La respuesta posterior funciona bien, pero es como establecer una opción global, por lo que debe hacer lo siguiente:

$.ajaxSetup({ async: false }); //ajax call here $.ajaxSetup({ async: true });


En mi caso, Jay D tiene razón. Tengo que agregar esto antes de la llamada.

$.ajaxSetup({ async: false });

En mi código anterior, tengo esto:

var jsonData= (function() { var result; $.ajax({ type:''GET'', url:''data.txt'', dataType:''json'', async:false, success:function(data){ result = data; } }); return result; })(); alert(JSON.stringify(jsonData));

Funciona encontrar. Luego cambio a

var jsonData= (function() { var result; $.getJSON(''data.txt'', {}, function(data){ result = data; }); return result; })(); alert(JSON.stringify(jsonData));

La alerta no está definida.

Si agrego esas tres líneas, la alerta muestra nuevamente los datos.

$.ajaxSetup({ async: false }); var jsonData= (function() { var result; $.getJSON(''data.txt'', {}, function(data){ result = data; }); return result; })(); alert(JSON.stringify(jsonData));


Haga rodar su propio ej.

function syncJSON(i_url, callback) { $.ajax({ type: "POST", async: false, url: i_url, contentType: "application/json", dataType: "json", success: function (msg) { callback(msg) }, error: function (msg) { alert(''error : '' + msg.d); } }); } syncJSON("/pathToYourResouce", function (msg) { console.log(msg); })


Necesita hacer la llamada usando $.ajax() sincrónicamente, de esta manera:

$.ajax({ url: myUrl, dataType: ''json'', async: false, data: myData, success: function(data) { //stuff //... } });

Esto coincidiría usando $.getJSON() esta manera:

$.getJSON(myUrl, myData, function(data) { //stuff //... });


No creo que puedas establecer esa opción allí. Tendrás que usar $.ajax() con los parámetros apropiados (básicamente, getJSON también ajusta esa llamada a una API más sencilla).