AJAX является асинхронным, source
не может сравниться с запрашиваемым JSON, поскольку он еще не доступен. jQuery.getJSON
вернет объект jqXHR
, который он создает для обработки запроса , а затем убегает и получает ответ.
$.getJSON(url, function(json) {
// deal with response here
});
После получения ответа ( через некоторое время ) выполняется обратный вызов (функция, которую вы передаете), поэтому вы можете получить доступ к ответу через первый параметр (который вы называется json
).
Вы можете увидеть это, попробовав следующее:
console.log('1');
$.getJSON(url, function(json) {
console.log('2');
});
console.log('3');
Вы увидите, что ваша консоль будет читать 1, 3, а затем через доли секунды (т.е. время выполнения HTTP-запроса), 2; Это показывает, что ответ getJSON возвращается без завершения, скрипт продолжает выполняться, а затем вызывается обратный вызов через некоторое время .