Czy można ustawić async: false na $.getJSON call
Czy można ustawić async: false
podczas wywoływania $.getJSON()
tak, aby wywołanie blokowało się, a nie było asynchroniczne?
7 answers
Musisz wykonać połączenie używając $.ajax()
do niego synchronicznie, Tak:
$.ajax({
url: myUrl,
dataType: 'json',
async: false,
data: myData,
success: function(data) {
//stuff
//...
}
});
Pasuje do aktualnie używanego $.getJSON()
Tak:
$.getJSON(myUrl, myData, function(data) {
//stuff
//...
});
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-19 16:29:50
Obie odpowiedzi są błędne. Możesz. Musisz zadzwonić
$.ajaxSetup({
async: false
});
Przed wywołaniem JSON ajax. I możesz ustawić go na true po wywołaniu retuns (jeśli są inne zastosowania ajax na stronie, jeśli chcesz je asynchronizować)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-01 01:37:49
Myślę, że oboje macie rację. Późniejsza odpowiedź działa dobrze, ale jej jak ustawienie opcji globalnej, więc musisz wykonać następujące czynności:
$.ajaxSetup({
async: false
});
//ajax call here
$.ajaxSetup({
async: true
});
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-21 16:43:27
W moim przypadku Jay D ma rację. Muszę to dodać przed telefonem.
$.ajaxSetup({
async: false
});
W poprzednim kodzie mam to:
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));
To działa znaleźć. Następnie zmieniam na
var jsonData= (function() {
var result;
$.getJSON('data.txt', {}, function(data){
result = data;
});
return result;
})();
alert(JSON.stringify(jsonData));
Alarm jest nieokreślony.
Jeśli dodam te trzy linie, alert ponownie wyświetli dane.
$.ajaxSetup({
async: false
});
var jsonData= (function() {
var result;
$.getJSON('data.txt', {}, function(data){
result = data;
});
return result;
})();
alert(JSON.stringify(jsonData));
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-28 07:22:09
Myślę, że nie możesz tam ustawić tej opcji. Musisz użyć jQuery.ajax () z odpowiednimi parametrami (zasadniczo getJSON po prostu zawija to wywołanie w łatwiejsze API).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-04 13:03:15
Roll your own np.
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);
})
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-04 08:37:06
Jeśli potrzebujesz await
, aby uniknąć zagnieżdżania kodu:
let json;
await new Promise(done => $.getJSON('https://***', async function (data) {
json = data;
done();
}));
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-20 23:38:38