Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2021, 18:35   #1
begovik
Пользователь
 
Аватар для begovik
 
Регистрация: 08.03.2010
Сообщений: 48
По умолчанию Получить результат выполнения $.post запроса

Добрый день. Ребят, кто может внятно объяснить/показать как получить результат выполнения $.post запроса во внешний код

Код:
var myVar;
$.post("handlers/mao_ajax.php", {getClientId}).done(function (data) {
    console.log(data);
    myVar = data;
});
console.log(myVar);
Вот console.log(myVar) равен undefined.
Только умоляю не надо объяснять ПОЧЕМУ так не работает, я до тошноты про это начитался, но КАК сделать чтобы ВНЕШНЯЯ переменная содержала ответ сервера ПОСЛЕ выполнения $.post запроса я так и не понял.

Ниже идёт код, в котором мне нужно использовать эти данные, и я абсолютно не врубаюсь как так можно было сделать, что код, который ниже - выполняется раньше, чем тот, который выше. Либо как можно было не сделать ПРОСТОГО, сука П Р О С Т О Г О решения данного крышесноса, это же элементарная потребность получить результат выполнения функции. Кстати пробовал этот пост-запрос и в функцию оборачивать, вызов функции-то происходит-то не асинхронно(???)
Целый день бьюсь, ПРОКЛИНАЮ РАЗРАБОТЧИКОВ ЯВАСКРИПТА!!!
begovik вне форума Ответить с цитированием
Старый 07.03.2021, 19:13   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Сообщение от begovik Посмотреть сообщение
Вот console.log(myVar) равен undefined.
Потому, что AJAX работает асинхронно. Результат запроса нужно получать и обрабатывать в callback функции.
Streletz вне форума Ответить с цитированием
Старый 07.03.2021, 19:41   #3
begovik
Пользователь
 
Аватар для begovik
 
Регистрация: 08.03.2010
Сообщений: 48
По умолчанию

Хорошо, пусть простой вызов выполняется когда ему моча в голову стукнет, а как же тогда с функцией (если пост-запрос обернуть в функцию)? Функции же до их вызова не "работают" как он может вызываться асинхронно, если я функцию вызываю в определённом месте кода?
begovik вне форума Ответить с цитированием
Старый 08.03.2021, 12:44   #4
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Не вызывается, а выполняется асинхронно. Вы инициировали AJAX запрос где-то и он полетел на сервер в асинхронном режиме. То же самое будет и если Вы инициируете его внутри функции.

Или Вы хотите результат запроса вернуть в качестве значения функции?
Streletz вне форума Ответить с цитированием
Старый 08.03.2021, 16:27   #5
begovik
Пользователь
 
Аватар для begovik
 
Регистрация: 08.03.2010
Сообщений: 48
По умолчанию

Цитата:
Сообщение от Streletz Посмотреть сообщение
Вы инициировали AJAX запрос где-то и он полетел на сервер в асинхронном режиме.
Вот это совсем с логикой не дружит, а если я в функцию передаю параметры? Он (запрос) что, не дождавшись параметров улетит???

Цитата:
Или Вы хотите результат запроса вернуть в качестве значения функции?
Да в качестве чего угодно, для меня любой способ, который вернёт мне результат выполнения запроса В НУЖНОМ МНЕ МЕСТЕ КОДА (это важно) будет счастьем))

Я пока что вместо $.post $.ajax использовал с async = false, но во-первых мне самому это не нравится (всё-же мало ли что может случиться, а страница в целом должна работать), а во-вторых все (любая статья) говорят, что это крайне не правильно, и к тому же где-то читал, что скоро вообще синхронные запросы запретят.
begovik вне форума Ответить с цитированием
Старый 09.03.2021, 10:40   #6
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Сообщение от begovik Посмотреть сообщение
Вот это совсем с логикой не дружит, а если я в функцию передаю параметры? Он (запрос) что, не дождавшись параметров улетит???
Смотря как Вы передаёте параметры. Если всё сделано как положено, запрос улетит вместе со всеми нужными параметрами.
Цитата:
Сообщение от begovik Посмотреть сообщение
В НУЖНОМ МНЕ МЕСТЕ КОДА
Попробуйте поиграться с async/await
Streletz вне форума Ответить с цитированием
Старый 09.03.2021, 11:24   #7
begovik
Пользователь
 
Аватар для begovik
 
Регистрация: 08.03.2010
Сообщений: 48
По умолчанию

Цитата:
Сообщение от Streletz Посмотреть сообщение
Попробуйте поиграться с async/await
Я целый день "игрался" да так наигрался, что и к компьютеру за километр тошно подходить.

Цитата:
Сообщение от Streletz Посмотреть сообщение
Если всё сделано как положено
Да в документации к JS сам чёрт ногу сломит, как положено???
В PHP например всё просто и чётко, отличная понятная и простая документация, там ещё можно говорить про "положено", а тут...

Цитата:
Сообщение от Streletz Посмотреть сообщение
Попробуйте поиграться с async/await
Вот интересно из всех кто посмотрел тему, все ли, когда хотят получить данные "играются", а главное как долго "играются" перед тем как получают результат (ну или вырубают к чёртовой бабушке асинхронность)?

В общем понятно, для стандартной ситуации в ДЖаваскрипте нет стандартного решения, никому ж не надо получать данные!
Отлично, всё в духе JS!!!

Последний раз редактировалось begovik; 09.03.2021 в 11:41.
begovik вне форума Ответить с цитированием
Старый 09.03.2021, 11:33   #8
begovik
Пользователь
 
Аватар для begovik
 
Регистрация: 08.03.2010
Сообщений: 48
По умолчанию

А скажите, кто знает, может кто сталкивался, во всяких ВУЯХ, РЕАКТАХ и прочей нечисти этот момент проработан, там можно остаться живым до того момента как получишь в ответе от сервера долгожданный ответ?
Хотя из-за одного момента изучать фреймворк... такое себе удовольствие.
Или может в АКСИОС как-то попроще, или то же самое?

Последний раз редактировалось begovik; 09.03.2021 в 11:44.
begovik вне форума Ответить с цитированием
Старый 15.03.2021, 08:34   #9
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

само понятие выполнения асинхронного кода - оно везде одинаковое.... разная реализация просто.

Если вы хотите сделать просто СИНХРОННЫЙ запрос, то есть выполнить запрос и дождаться ответа, и пока ответ не придет- скрипт его ожидает, можете использовать
Код:
		$.ajax({
			type		: "POST", 
			url		: url,
			async	: false
			.....
 			success(data) {
			   console.log(data);
			}
ADSoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
результат post-запроса в переменную Mortimoro JavaScript, Ajax 6 21.10.2014 21:11
Из POST запроса получить как число Человек_Борща PHP 2 28.12.2012 14:43
Не успеваю получить результат выполнения функции в процедуре Den7656 Общие вопросы Delphi 15 12.09.2011 11:54
Результат POST-запроса в TStringStream mc_12 Работа с сетью в Delphi 0 06.07.2010 14:49
Как в ProgressBar отобразить процесс выполнения Post запроса через Idhttp Joe_Tribbiani Работа с сетью в Delphi 8 15.06.2009 10:39