HOla leonobarg una alternativa seria si no lo puedes lograr con ajax es que hagas que se envie el formulario pero colocas por cada input en el value el valor que estas enviando por post por ejemplo:
Código PHP:
<input type="text" name="nombre" value="<?php echo $_POST['nombre']; ?>">
Entonces Cuando se envia el formulario ejecutas una consulta preguntando si el DNI ya existe, en ese caso informas con javascript el error y el formulario vuelve pero el usuario no tiene que volver a cargar todos los datos nuevamente, solo debe cambiar el dni. Todo esto si procesas el formulario en la misma pagina.
Es una idea, a lo mejor puede servirte.
Saludos