Как в Ajax сделать ответ сервера доступным всему скрипту, а не только специальной области Ajax?

$(document).ready(function(){
$.ajax({
  url: 'ajax.php',
  type: 'POST',
  data: 't1f=0&t1t=6',
  dataType: 'json',
  success: function(resp){
alert(resp[0].id); //Тут работает.
}})});
alert(resp[0].id);//Тут уже нет.
  • Вопрос задан
  • 184 просмотра
Решения вопроса 1
Stalker_RED
@Stalker_RED
Как вынести переменную во внешнюю область видимости вам ThunderCat правильно показал. Но алерт все равно "покажет фигу", потому что он будет выполнен ДО того, как сработает ajax запрос. Хоть этот запрос и написан выше, но он выполняется не мгновенно. И если запрос успешно отработает, то ответ в переменную попадет, конечно, но уже ПОСЛЕ срабатывания алерта. Если вместо алерта сделать вывод этой-же информации по кнопке, или с задержкой на setTimeout, например, то данные из ответа уже будут видны.

Читайте о асинхронности в js, используйте async/await или callback-функции.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега JavaScript
{PHP, MySql, HTML, JS, CSS} developer
var someGlobal;
$(document).ready(function(){
$.ajax({...
   success: function(resp){
      someGlobal = resp;
...
}})});
alert(someGlobal); //Тут все равно фига :)
Нужно учитывать что аякс запрос - асинхронный, то есть алерт сразу после кода аякс выдаст вам фигу с маслом, так как этот код исполнится в момент инициализации запроса, а не после получения ответа.

PS:
специальной области Ajax
Это вы так область видимости переменных понимаете? Забавно ))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы