Почему всегда возвращает undefined?
$.ajax - функция асинхронная, она выполняется отдельно от остального кода. Так что, код, зависящий от результатов ее выполнения, перенесите в success.
Потому что $.ajax у вас работает асинхронно. Плюс к этому return в функции success вернёт результат в никуда.