Buenas VictorDevelop.
Lo primero recomendarte leer el siguiente post, donde encontrarás las normas básicas de como publicar en el foro, donde está explicado como incluir el código correctamente en tus mensajes...
https://www.aprenderaprogramar.com/foros/index.php?topic=1460.msg7784#msg7784El archivo php lo tienes mal planteado, de la forma que lo tienes, si introducimos "Jose" devolvería que el usuario está disponible, ya que la primera vez que se recorre el bucle si habrá coincidencia pero como el bucle se seguirá ejecutando en la siguientes pasadas del bucle no se cumplirá esa coincidencia y $msg dirá que el nombre está disponible.
Este sería el códiog php retocado:
<?php
//Nombres alojados
$nombres[0]="Jose";
$nombres[1]="Fernando";
$nombres[2]="Juan";
$msg="";
$nombreRecibido=$_POST["nombreUsuario"];
$existeUsuario=false;
for($i=0;$i<count($nombres);$i++)
{
if($nombres[$i]==$nombreRecibido) {
$existeUsuario=true;
}
}
if($existeUsuario == true) {
$msg="El usuario ".$nombreRecibido." ya existe";
} else {
$msg="Usuario ".$nombreRecibido." esta disponible";
}
echo $msg;
?>
Y el código del archivo html también habría cosas que cambiar. En primer lugar, haces varias veces lo siguiente:
document.getElementById("UsuarioExiste");
cuando en tu código no existe ningún elemento que tenga como id "UsuarioExiste".
Tu función recibe un parámetro llamado nombre que luego asignas a una variable cuando no haría falta esto último, estarías ocupando en memoria dos veces lo mismo pero con distinto nombre, esto no es un error, pero se puede mejorar.
Dentro del siguiente if...
nombreRecibido = xmlhttp.responseText.split;
No necesitas crear ningún array, puesto que lo que se recibirá será una frase que dice si está o no está disponible el nombre enviado.
En la siguiente línea de código:
var paramentros = 'nombreUsuario' + encodeURIComponent(nombreRecibido);
Te faltaría añadir un signo igual(=) después de 'nombreUsuario',
Y aquí el código html sin errores y funcionando:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Alta Usarios</title>
<script type="text/javascript">
function UsuarioExistente(nombre)
{
var xmlhttp;
var respuestaConsulta = '';
//Valor del label de respuesta
var valorLabelRespuesta = document.getElementById("UsuarioExiste"); // no existe ningun elemento con este id.
//Si no se le ha pasado ningun valor
if (nombre.length == 0) {
document.getElementById("UsuarioExiste").innerHTML = "";
return;
}
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
respuestaConsulta = xmlhttp.responseText;
valorLabelRespuesta.innerHTML = respuestaConsulta;
}
if (xmlhttp.status == 404) {
alert("Error=>" + Error);
return;
}
}
var paramentros = 'nombreUsuario=' + encodeURIComponent(nombre);
xmlhttp.open('POST', 'altaUsuarios.php'); // Método post y url invocada
xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); // Establecer cabeceras de petición
xmlhttp.send(paramentros); // Envio de parámetros usando POST
}
</script>
</head>
<body>
<h1>Alta Usarios</h1>
<form action="">
<label style="padding-right:20px;">Usuario</label>
<input name="nombreUsuario" onBlur="UsuarioExistente(this.value)"/>
<label name="UsuarioExiste" id="UsuarioExiste"></label>
<br />
<label style="padding-right:15px;">Nombre</label>
<input name="nombre"/>
<br />
<label style="padding-right:5px;">Apellidos</label>
<input name="apellidos" />
<input type="submit" value="Enviar"/>
</form>
</body>
</html>
Saludos.