Когда моя страница загружается, я хочу сразу же вытащить данные JSON с другого сервера с помощью $ .ajax(), и я хочу иметь доступ ко всем данным без повторного запроса json-файла. Проблема в том, что когда я присваиваю данные переменной, объем этой переменной ограничивается функцией $ .ajax(), и я не могу получить к ней доступ в другом месте ...Загрузите внешний JSON один раз, используйте его повторно ....?
Похоже, поскольку у меня уже есть загрузив эту информацию, я должен буду использовать ее столько раз, сколько мне нужно, не перепросив ее снова и снова (медленно). Используя простой запрос reddit.json, например ниже
$(document).ready(function(){
$.ajax({
type: "GET",
url: 'https://www.reddit.com/.json',
timeout:3000,
dataType: 'JSON',
jsonpCallback: 'callback',
success: function(data) {
console.log(data);
var myData = data; //this variable is confined :(
},
error: function(){
console.log('error');
}
});
});
Если я запускаю его вне от document.ready(), то я могу получить к нему во всем мире, но я не знаю, если это было прохладно или нет, или как лучших практики, вы знаете ...
Будет лучшего способ получить доступ к уже загруженному объекту JSon вне области видимости функции, что сделал это первоначальный запрос? Или это даже возможно ...?
Пока вы можете гарантировать, что данные будут доступны только через * после завершения запроса Ajax, вы можете хранить его там, где хотите. Например. если вам нужно получить доступ к данным в обработчиках событий, привяжите обработчики событий только * после завершения запроса. –
Если вы используете глобальную переменную, данные JSON могут использоваться совместно с любым вызывающим абонентом, предназначенным или нет. – Sparky256
Связанный: [Как вернуть ответ от асинхронного вызова?] (Https://stackoverflow.com/questions/14220321/how-do-return-the-response-from-an-asynchronous-call/14220321) –