Подскажите по аджаксу jquery
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;А где его использовать - это уже другой вопрос. Нужно внутри - делай внутри. Нужно снаружи делай снаружи. Цели ж ведь могут быть разные.