@victorib_us

Как увидеть переменную из функции js?

Есть такой Ajax запрос:
   $.ajax({
        type: "POST",
        data: {'request':1},
        url: "/json.php",
        dataType: "json",
        success: function(data){
            var t =  data.data;
        }
    });

    console.log(t);


мне нужно вывести что вернулось в t но именно вот уже после этой функции так как в примере, есть переменная t и в нее нужно записать результат данного ajax запроса но вот не получается разобраться с областью видимости этой переменной
  • Вопрос задан
  • 2542 просмотра
Пригласить эксперта
Ответы на вопрос 4
laska
@laska
PHP/JS разработчик
Решение в лоб. Но работать не будет, так как $.ajax функция ассинхронная.
var t;
$.ajax({
    type: "POST",
    data: {'request':1},
    url: "/json.php",
    dataType: "json",
    success: function(data){
        t = data.data;
    }
});
console.log(t);


Работающее решение.
var t;
$.ajax({
    type: "POST",
    data: {'request':1},
    url: "/json.php",
    dataType: "json",
    success: function(data){
        t = data.data;
        callback();
    }
});
function callback () {
    console.log(t);
}
Ответ написан
nanomen
@nanomen
front-end разработчик
Вижу выход такой:

Где-то глобальный объект:
var obj = {
      t: null
}

Потом где-то вызываем загрузку с сервера данных:
var $deffered = $.ajax({
        type: "POST",
        data: {'request':1},
        url: "/json.php",
        dataType: "json",
    });

$deffered.done(function(data){

obj.t = data.data;

});


По какому-то условию смотрим на состояние свойства obj.t, если оно не null, используем дальше.
Ну и конечно можно вызвать любую функцию, когда данные от сервера получены.
Ответ написан
Комментировать
Stalker_RED
@Stalker_RED
Можно с коллбеком, как указано выше, или чуть проще - вывести в самом обработчике onsuccess, но сообщение вы увидите только в случае успешного запроса.
$.ajax({
        type: "POST",
        data: {'request':1},
        url: "/json.php",
        dataType: "json",
        success: function(data){
            var t =  data.data;
            console.log('Huge success! ', t);
        }
    });
Ответ написан
mlnkv
@mlnkv
JavaScript Developer
$.post("/json.php", {request: 1}, function(resp) {
	var data = resp.data;

	// делаем с data что угодно ...
});
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы