Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.03.2021, 18:17
Интересующийся
Отправить личное сообщение для begovik Посмотреть профиль Найти все сообщения от begovik
 
Регистрация: 09.02.2019
Сообщений: 22

Получить результат выполнения $.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 запроса я так и не понял.
Ответить с цитированием
  #2 (permalink)  
Старый 07.03.2021, 18:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,149

begovik,
попробуйте это https://learn.javascript.ru/async-await
Ответить с цитированием
  #3 (permalink)  
Старый 07.03.2021, 19:00
Интересующийся
Отправить личное сообщение для begovik Посмотреть профиль Найти все сообщения от begovik
 
Регистрация: 09.02.2019
Сообщений: 22

Спасибо конечно за участие, но я за сегодня (да и не только) несколько раз и эту статью перечитывал, несколько раз выстраивал по разному код и ничего, результат один - UNDEFINED...
Ответить с цитированием
  #4 (permalink)  
Старый 09.03.2021, 11:56
Интересующийся
Отправить личное сообщение для begovik Посмотреть профиль Найти все сообщения от begovik
 
Регистрация: 09.02.2019
Сообщений: 22

Так что, никто никогда не нуждался в получении данных от сервера в нужном месте кода?
Это что настолько экзотическая надобность?
Я полагал, что это одна из самых стандартных ситуаций.
Или на JS форуме нет JS-разработчиков?
Ответить с цитированием
  #5 (permalink)  
Старый 09.03.2021, 12:51
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,273

begovik, на тот момент, что ты вызываешь
Сообщение от begovik
console.log(myVar);
Запрос мог еще не отработать... И ответ не получен...

Сообщение от begovik
Так что, никто никогда не нуждался в получении данных от сервера в нужном месте кода?
Эти запросы используются асинхронно.
Все действия с тем, что прислали, делаются в самом обработчике.
Ответить с цитированием
  #6 (permalink)  
Старый 09.03.2021, 14:11
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,775

Сообщение от begovik
Так что, никто никогда не нуждался в получении данных от сервера в нужном месте кода?
Бывает, что нуждаемся.
Есть fetch, async/await.
Ответить с цитированием
  #7 (permalink)  
Старый 09.03.2021, 14:27
Интересующийся
Отправить личное сообщение для begovik Посмотреть профиль Найти все сообщения от begovik
 
Регистрация: 09.02.2019
Сообщений: 22

Сообщение от ksa Посмотреть сообщение
Запрос мог еще не отработать... И ответ не получен...
Я это понимаю, перед тем как сюда писать, я конечно-же погуглил, вопрос довольно распространённый, но все советы не помогли (на тех форумах темы тоже кончались ничем...).

Другой вопрос в том что это МЯГКО говоря не логично (не сама асинхронность, а то, что нет стандартных способов решения, кроме как непонятно как перестраивать весь код).

Сообщение от ksa Посмотреть сообщение
Все действия с тем, что прислали, делаются в самом обработчике.
У меня такая ситуация, по нажатию на кнопку я подготавливаю 8 параметров, и ЗАТЕМ вызываю функцию, которая что-то с ними делает.
Среди этих параметров есть и тот, который требует обращение к серверу. И получается, что семь параметров + восьмой(undefined) обрабатываются функцией, а потом идёт запрос к серверу (когда он уже на... не нужен).

Так вот КАК мне поменять логику??? Я совершенно не представляю.
Неужели по нажатию на кнопку посылать запрос на сервер, а когда придет ответ, подготавливать остальные параметры? Тогда, если ответ от сервера не придет (ну или что-то пойдёт не так), то приложение зависнет, толку тогда от асинхронности???
Ответить с цитированием
  #8 (permalink)  
Старый 09.03.2021, 14:31
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,273

Сообщение от begovik
Так вот КАК мне поменять логику?
Тут тебе решать...

Всегда есть два радикальных способа:
- слать много запросов и получать быстрые ответы
- слать один большой запрос, получать полный ответ для всей "страницы".

Но истина, наверное, где-то посередине.
Ответить с цитированием
  #9 (permalink)  
Старый 09.03.2021, 14:32
Интересующийся
Отправить личное сообщение для begovik Посмотреть профиль Найти все сообщения от begovik
 
Регистрация: 09.02.2019
Сообщений: 22

Сообщение от voraa Посмотреть сообщение
Бывает, что нуждаемся.
Есть fetch, async/await.
То, что они есть я знаю, другое дело, что я не понимаю как их использовать (читайте мой ответ выше, последний абзац).
Ну вот напишите пожалуйста на моём примере как использовать эти страшные слова.

Последний раз редактировалось begovik, 09.03.2021 в 14:40.
Ответить с цитированием
  #10 (permalink)  
Старый 09.03.2021, 14:33
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,273

Сообщение от begovik
У меня такая ситуация, по нажатию на кнопку я подготавливаю 8 параметров, и ЗАТЕМ вызываю функцию, которая что-то с ними делает.
Среди этих параметров есть и тот, который требует обращение к серверу. И получается, что семь параметров + восьмой(undefined) обрабатываются функцией, а потом идёт запрос к серверу (когда он уже на... не нужен).
Если я правильно тебя понял...
Все что тебе нужно - просто выполнить эту обработку не в самой "функции", а в колбэке ответа на запрос 8-го параметра.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему результат Ajax запроса - Исходный код страницы pro_xaoc AJAX и COMET 4 23.11.2011 10:03
Достать результат выполнения ajax-запроса из функции EvgeniyRRU AJAX и COMET 6 04.11.2011 19:32
Объясните пожалуйста как обратится к функции и получить результат zeraid AJAX и COMET 4 03.04.2011 14:55
результат от запроса jquery korner Общие вопросы Javascript 3 14.01.2011 16:05
как получить результат умножения b и e vmtiu Элементы интерфейса 5 27.11.2009 19:20