Область видимости переменных JavaScript?
$.ajax асинхронен.
Вы его сконфигурировали, повесили обработчики на коллбэки, отправили запрос. И вернули пустоту.
Через какое-то время пришли данные сервера, коллбэк отработал и в resultJSON что-то появилось.
> Почему текущий метод возвращает undifined?

Потому, что $.ajax (точнее, XmlHttpRequest) только лишь запускает отправку запроса и сразу же возвращает управление, она не ждет, пока он завершится. И return срабатывает раньше, чем вызовется функция onDone, потому там undefined. Логично же?

> Понимаю, что что-то не так с областью видимости переменных, но как сделать чтобы метод вернул мне значение data в случае успешного получения данных от скрипта?

Никак. Научитесь мыслить асинхронно: не «метод делает запрос и возвращает данные», а «метод отправляет запрос и когда-нибудь потом вызовет функцию onDone».