El problema principal que de verdad deberia preocuparte de tu script es que la seguridad es nula, es decir no revisas para nada lo que contienen las variables $_POST['xxxx'] y las insertas dentro del SQL, lo que te hara victima directa de Inyeccion SQL (googlealo)
Ahora, la respuesta a lo que preguntas es porque en tu código PHP no haces ninguna validación, todo se lo dejas al javascript; antes de la linea que dice
Código PHP:
$ins_personal = "INSERT IN..............
tienes que hacer una consulta select para ver si esa información ya existe en la bd y solo pasar al insert cuando no exista tal información.
Aqui una IDEA GENERAL A GROSO MODO::: No copies y pegues esto!
Código PHP:
$sql = "select * from tabla where (dni='".$_POST['dni']."')"
$query = mysql_query($sql);
if (mysql_num_rows($query)>0) {
echo "error, duplicado";
} else {
// continua ...
$ins_personal = "INSERT IN..............
............ etc
}