потому что 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);