Почему функция ничего не возвращает?
Как вернуть ответ из XMLHttpRequest?
потому что 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);