butteff
@butteff
Раз в тысячу лет заправляю свитер в носки

Почему функция возвращает не результат ajax запроса, а пустой результат?

Есть вызов функции:

checkWin();

Эта функция промежуточная для подготовки ajax запроса:

function checkWin() {
		var state = getBoardState();
		var res = apiSend('checkwin', state);
		console.log('res:' + res);
		return res;
	}


Функция с ajax запросом:
function apiSend(action, state, team=false) {
		
		$.ajax({
		    type: 'POST',
		    url: '/backend/api.php',
		    mimeType: "text/html",
		    data: { action:action, state:state, team:team}, 
		    success: function(data){
		    	console.log('data: '+data);
		    	return data;
		    },
		    error: function() {
		    	return false;
		    }, 

		  });
		
	}


Как видно, в коде есть два вызова console.log! Это для дэбага.
Их результат тут:

data: works
res: undefined


Т.е. данные от сервера приходят верные, но функция возвращает не то, что в success, а ничего не возвращает.
Я пробовал делать таймаут внутри $.ajax - та же беда.
setTimeout() внутри checkWin() тоже не помогает.

Что я делаю не так?
  • Вопрос задан
  • 633 просмотра
Решения вопроса 1
@Hedy
AJAX запрос - асинхронная функция, вы должны использовать callback а не возвращать значение. Добавьте в функцию apiSend еще 1 параметр для callback функции и укажите ее в "success".
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы