AJAX - Ajax no responde

   
Vista:

Ajax no responde

Publicado por victor (29 intervenciones) el 26/05/2017 10:58:33
Buenos dias.
Estoy empezando con ajax y estoy haciendo una practica y no vá.
La cosa es que tengo que hacer una peticion ajax que me diga si el nombre de usuario existe o no al salir del input que contiene el nombre.
Este seria el html:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Alta Usarios</title>
    <script type="text/javascript">
 
        function UsuarioExistente(nombre)
        {
            alert("Dentro de la funcion");
            var xmlhttp;
            var nombreRecibido = nombre;
            var contenidoMostrar = "";
 
            //Valor del label de respuesta
            var valorLabelRespuesta = document.getElementById("UsuarioExiste");
            var respuestaExisteMostrar = "";
 
 
            //Si no se le ha pasado ningun valor
            if (nombreRecibido.length == 0)
            {
                document.getElementById("UsuarioExiste").innerHTML = "";
                return;
            }
 
            //alert("Linea 26");
            xmlhttp = new XMLHttpRequest();
 
            xmlhttp.onreadystatechange = function ()
            {
                alert("Dentro de la funcion de respuesta");
                if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
                {
                    nombreRecibido = xmlhttp.responseText.split;
 
                    for ($i = 0; $i < nombreRecibido.count; $i++)
                    {
                        alert("DentroDelfor"+nombreRecibido[i]);
                    }
                }
            }
            var paramentros = 'nombreUsuario' + encodeURIComponent(nombreRecibido);
            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 enctype="application/x-www-form-urlencoded" method="post">
        <label style="padding-right:20px;">Usuario</label>
        <input name="nombreUsuario" onBlur="UsuarioExistente(this.value)"/>
        <label name="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>

Y este el pequeño php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<meta charset="utf-8"/>
<?php
//Nombres alojados
$nombres[0]="Jose";
$nombres[1]="Fernando";
$nombres[2]="Juan";
$msg="";
$nombreRecibido=$_POST["nombreUsuario"];
//echo"DentroDealtausuarios.php";
//exit;
$existeUsuario=false;
 
for($i=0;$i<$nombres.count();$i++)
{
    if($nombres[$i]==$nombreRecibido)
    {
        $msg="El usuario ".$nombres[$i]."Ya existe";
        $existeUsuario=true;
 
    }else
    {
        $msg="Usuario ".$nombres[$i]."esta disponible";
    }
}
echo $msg;
?>

Alguna idea?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Ajax no responde

Publicado por xve (207 intervenciones) el 27/05/2017 08:23:06
Hola Victor, tienes un error en el código...
esta linea creo que esta mal:
1
for($i=0;$i<$nombres.count();$i++)
tendria que ser:
1
for($i=0;$i<count($nombres);$i++)


También, en el archivo php, creo que te sobra la linea:
1
<meta charset="utf-8"/>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ajax no responde

Publicado por Victor (29 intervenciones) el 27/05/2017 08:27:12
Ok,muchas gracias por responder.
Acabo de corregirlo y mediante los alert parece que hay dos errores mas.
por un lado no entra dentro de este if:
1
2
3
4
5
6
7
8
9
10
11
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
    alert("Dentro del if");
 
    nombreRecibido = xmlhttp.responseText.split;
 
    for ($i = 0; $i < nombreRecibido.length; $i++)
    {
        alert("DentroDelfor"+nombreRecibido[i]);
    }
}
Y por otro la peticion no llega al fichero php ya que el echo que le pongo dentro del php no aparece
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ajax no responde

Publicado por Victor (29 intervenciones) el 27/05/2017 09:36:35
Buenas de nuevo.
Atraves de distintos alerts encontré el error
1
2
3
4
5
6
7
8
9
10
11
12
13
alert("Antes del If que comprueba respuesta ReadyStateVale=>"+xmlhttp.readyState+"Y Status:"+xmlhttp.status);
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
    alert("Dentro del if");
 
    nombreRecibido = xmlhttp.responseText.split;
 
    for ($i = 0; $i < nombreRecibido.length; $i++)
    {
        alert("DentroDelfor"+nombreRecibido[i]);
    }
}
alert("Despues del If que comprueba respuesta ReadyStateVale=>" + xmlhttp.readyState + "Y Status:" + xmlhttp.status);

Resulta que xmlhttp.readyState si llega a tomar el valor de 4 pero xmlhttp.status toma el valor 404 por lo que no que no lo encuentra.
donde está el fallo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de xve

Ajax no responde

Publicado por xve (207 intervenciones) el 28/05/2017 09:19:09
Gracias por comentarlo Victor
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ajax no responde

Publicado por Victor (29 intervenciones) el 28/05/2017 12:16:49
De nada,pero como se resuelve un error 404?
En base al codigo que he puesto?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Ajax no responde

Publicado por xve (207 intervenciones) el 29/05/2017 08:18:29
Hola Victor, el problema es que no encuentra el archivo: altaUsuarios.php en la carpeta donde se llama a ejecutar el ajax!!!

Recuerda, que si el servidor es Linux, diferencia las mayúsculas de las minúsculas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ajax no responde

Publicado por Victor (29 intervenciones) el 29/05/2017 09:05:36
Si es un lobo me come.
Eso ya lo arreglé y status ya vale 200.
Pero da la sensacion de que no entra en el fichero PHP.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//Nombres alojados
$nombres[0]="Jose";
$nombres[1]="Fernando";
$nombres[2]="Juan";
$msg="";
$nombreRecibido=$_POST["nombreUsuario"];
echo"DentroDealtausuarios.php";
$existeUsuario=false;
 
for($i=0;$i<count($nombres);$i++)
{
    if($nombres[$i]==$nombreRecibido)
    {
        $msg="El usuario ".$nombres[$i]."Ya existe";
        $existeUsuario=true;
 
    }else
    {
        $msg="Usuario ".$nombres[$i]."esta disponible";
    }
}
echo $msg;
?>
El echo "DentroDealtausuarios.php" no se muestra
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad