Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как вернуть значение ajax в функции? (https://javascript.ru/forum/misc/84219-kak-vernut-znachenie-ajax-v-funkcii.html)

Olga27 09.07.2022 14:55

Как вернуть значение ajax в функции?
 
Мне нужно проверить сессию на стороне сервера и вернуть значение. Делаю я вот так:
var check_session = function(soc)
    {
        $.ajax({
               type: "POST",
               data: "action=sesstest&soc="+soc,
               url: "/action.php",
               dataType: "json",
               success: function(responce)
               {
                         
                      if(responce.result=="success")
                       {
                          sess = responce.messages;
		  return;
}
              }
        });
        

    }

Var sess = check_session(soc);

В итоге значение я получаю “undefined”. Хотя через console.log в success ajax переменная sess выводит значение. Значит данные передаются и получаются как вернуть значение функции полученные через ajax и присвоить переменной?

рони 09.07.2022 16:44

Цитата:

Сообщение от Olga27
как вернуть значение функции

выкинуть переменную и запускать нужную функцию если result=="success"

Aetae 09.07.2022 21:14

Слишком много косяков, чтоб что-то объяснять, юзай async и пиши как будто асинхронности нет.

;(async()=>{ // глобальная обёртка в начале всего скрипта

// async перед декларацией function
async function check_session(soc) {
  // await перед вызовом async function
  const responce = await $.ajax({
    type: "POST",
    data: "action=sesstest&soc="+soc,
    url: "/action.php",
    dataType: "json",
  });

  return responce.result === "success" && responce.messages;
}


  
// await перед вызовом async function
var sess = await check_session(soc)

  
  
  
})(); // конец глобальной обёртки


Часовой пояс GMT +3, время: 19:44.