@rinaz22

Как получить ajax ответ через функцию?

Всем привет! Есть функция send(), внутри которого ajax. Как использовать ответ ajax'а в вне функции send?
Делаю так, но возвращает undefined:
var res = send("type", "123");
console.log(res);

function send(type, data) {
	$.ajax({
		method: "POST",
		url: "send.php",
		data: {
			type: type,
			data: data
		},
		success: function(result) {
			return result;
		},
	});
}
  • Вопрос задан
  • 61 просмотр
Решения вопроса 1
Не используйте синхронные XHR запросы. Передайте третьим параметром функцию обратного вызова. И разберитесь с асинхронностью в js.
function send(type, data, callback) {
  $.ajax({
    method: "POST",
    url: "send.php",
    data: {
      type: type,
      data: data
    },
    success: function(result) {
        callback(null, result);
    },
    error: function(error) {
        callback(error);
    }
  });
}

send("type", "123", (error, res) => {
   if (error) {
       console.error(error)
       return undefined;
   }
   console.log(res);
});
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
xEpozZ
@xEpozZ
Веб-разработчик
Send у вас void функция. она ничего не возвращает.
Ajax асинхронная функция, send является лишь инициатором.
Если погуглите "synchronous AJAX request", то найдене ссылку на одно из решений:
https://stackoverflow.com/questions/6685249/jquery...
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
summer Ярославль
от 100 000 до 140 000 ₽
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
19 апр. 2024, в 17:06
15000 руб./за проект
19 апр. 2024, в 16:53
1000 руб./за проект
19 апр. 2024, в 16:45
5000 руб./за проект