Ya lo he resuelto, por si alguien lo necesita:
Lo único que me faltaba era poner dentro de $.ajax -> async: false.
Si se hace sin añadir eso, se hace de forma asíncrona y siempre devuelve un valor indefinido.
Lo único que me faltaba era poner dentro de $.ajax -> async: false.
Si se hace sin añadir eso, se hace de forma asíncrona y siempre devuelve un valor indefinido.