Можно ли установить async: false в $.помощью метода getjson вызов
можно ли установить async: false
при вызове $.getJSON()
Так что вызов блоков, а не быть асинхронным?
7 ответов:
вам нужно сделать вызов с помощью
$.ajax()
к нему синхронно, вот так:$.ajax({ url: myUrl, dataType: 'json', async: false, data: myData, success: function(data) { //stuff //... } });
это будет соответствовать в настоящее время с помощью
$.getJSON()
такой:$.getJSON(myUrl, myData, function(data) { //stuff //... });
оба ответа неправильные. Вы можете. Вам нужно позвонить
$.ajaxSetup({ async: false });
прежде чем ваш JSON для AJAX-вызов. И вы можете установить его в true после повторного вызова (если есть другие использования ajax на странице, если вы хотите их асинхронности)
Я думаю, что вы оба правы. Более поздний ответ работает нормально, но это похоже на настройку глобального параметра, поэтому вам нужно сделать следующее:
$.ajaxSetup({ async: false }); //ajax call here $.ajaxSetup({ async: true });
в моем случае Джей Ди прав. Я должен добавить это перед вызовом.
$.ajaxSetup({ async: false });
в моем предыдущем коде, у меня есть это:
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));
Он работает найти. Затем я меняю на
var jsonData= (function() { var result; $.getJSON('data.txt', {}, function(data){ result = data; }); return result; })(); alert(JSON.stringify(jsonData));
предупреждение не определено.
если я добавлю эти три строки, предупреждение снова покажет данные.
$.ajaxSetup({ async: false }); var jsonData= (function() { var result; $.getJSON('data.txt', {}, function(data){ result = data; }); return result; })(); alert(JSON.stringify(jsonData));
Я не думаю, что вы можете установить эту опцию там. Вам придется использовать jQuery.ajax () с соответствующими параметрами (в основном getJSON просто обертывает этот вызов в более простой API).
свернуть свой собственный, например,
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); })