Виталий Бохин
953 сообщения
#7 лет назад
Приветствую, есть нужда достать возвращаемый ответ и положить во внешнюю переменную, подскажите как это сделать? например чтоб переменная result приняла значение ответа сервака и была доступна вне запроса, т.е в alert отобразится ответ из пхп. Заранее спасибо.
var result;
$.ajax({ 
            url:"/functions/check-user.php",
            type:"POST",
            dataType:"text",
            data: $(this).serialize(),
            async: false,
            success: function(response){
$('#form-message').text(response);
            },
            error: function() {
alert('Error');
            } 
        });
alert(result);

Андрей Андреев
798 сообщений
#7 лет назад
У вас по идее самый нижный алерт будет срабатывать ДО завершения запроса и в нем всегда будет undefinded. 
А в общем поидее так должно работать:
success: function(response){
result = response;
},

Виталий Бохин
953 сообщения
#7 лет назад
b0nn1e, алерт срабатывает после, я специально асинхронность выключил async: false,
ваше предложение не работает из-за области видимости переменной
Сидоров В.
918 сообщений
#7 лет назад
Отладка алертами это плохо.
Есть console.log();
С областью видимости все нормально. Наверное ошибка в другом месте.
Виталий Бохин
953 сообщения
#7 лет назад
Цитата (inter-job):
С областью видимости все нормально. Наверное ошибка в другом месте.
да, глаз замылился голова не варит сутра, загнался с объявлением переменной в теле функции, писал ей еще раз var от чего она становилась локальной, привык, что в пхп переменную всегда обозначать нужно $ . Про отладку алертами да вы правы, я так на скорую руку.
Дмитрий Гашко
193 сообщения
#7 лет назад
lufter, конечно забавные бывают случаи) Но как в переменую result может что-то записатся, если она объявлена до аякс-запроса, и вызывается после. А между этим она вообще нигде не присваивается.
Ее нет в самом запросе. Нигде... Это тоже самое что написать:

var a;
alert(a)

Вы повидимому забыли присвоить ей значение внутри аякс-запроса
Виталий Бохин
953 сообщения
#7 лет назад
Mnemonist, это я как загадку привел код, т.е. добавьте недостающее, сейчас все норм, говорю же var убрал и все заработало
var result;
$.ajax({ 
            url:"/functions/check-user.php",
            type:"POST",
            dataType:"text",
            data: $(this).serialize(),
async: false,
            success: function(response){
result = response;
            },
            error: function() {
alert('Error');
            } 
        });
alert(result); //выводит ответ

кто-то скажет , что с response можно и внутри работать, но мне нужно было именно вынести значение во внешние блоки
Дмитрий Гашко
193 сообщения
#7 лет назад
Я говорил что в первом примере нет result = response;
А где его использовать - это уже другой вопрос. Нужно внутри - делай внутри. Нужно снаружи делай снаружи. Цели ж ведь могут быть разные.