@raw1

Почему функция ничего не возвращает?

function getData() {
	$.ajax({
		url: '../elem/search.php',
		type: 'POST',
		cache:false,
		success : function(search) {
			return search;
		}
	})
}

var data = getData();
console.log(data);
  • Вопрос задан
  • 328 просмотров
Решения вопроса 1
Falseclock
@Falseclock
решаю нестандартные задачи
потому что AJAX - это асинхронный вызов - это раз
getData() у вас всегда будет возвращать void значение. - это два

нужен либо синхронный вызов, либо значение search передавать в другую функцию и там вешать хендлер, который обрабатывать данные.

Можете вот так вот протестировать

function getData() {
  console.log('1. вхождение в функцию');
  $.ajax({
    url: '../elem/search.php',
    type: 'POST',
    cache:false,
    success : function(search) {
      console.log('3. результат вызова');
      console.log(search);
      return search;
    }
  })
  console.log('2. выход из функции');
}

var data = getData();
console.log(data);


а вот добавив async: false - будет возвращаться результат

function getData() {
  console.log('1. вхождение в функцию');
  var result;
  $.ajax({
    url: '../elem/search.php',
    type: 'POST',
    cache:false,
    async: false,
    success : function(search) {
      result = search;
      console.log('3. результат вызова');
      console.log(data);
    }
  })
  console.log('2. выход из функции');
  return result;
}

var data = getData();
console.log(data);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы