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