Foros del Web » Programando para Internet » Javascript »

No me funciona el script

Estas en el tema de No me funciona el script en el foro de Javascript en Foros del Web. Hola, soy nuevo en el foro y no se si esta bien puesto aquí el tema, el problema que tengo es el siguiente, resulta que ...
  #1 (permalink)  
Antiguo 24/02/2015, 03:14
 
Fecha de Ingreso: febrero-2015
Mensajes: 8
Antigüedad: 9 años, 2 meses
Puntos: 0
No me funciona el script

Hola, soy nuevo en el foro y no se si esta bien puesto aquí el tema, el problema que tengo es el siguiente, resulta que estoy haciendo una verificación de un formulario de login a través de un script, pero no me funciona, el código es el siguiente. Os pongo también el fomulario para que lo veais, a ver si encontrais algún error. He probado a quitarle el action y el method al formulario, pero si lo hago no pasa nada.

Código:
<script>
	

		var READY_STATE_COMPLETE=4;
		var peticion_http = null;
		var XX;
 
		function inicializa_xhr()
		{
  			if(window.XMLHttpRequest) 
  			{
    		  return new XMLHttpRequest(); 
  		    }else if(window.ActiveXObject) 
  		    {
    		  return new ActiveXObject("Microsoft.XMLHTTP");
  		    }	 
		}
 
		function crea_query_string() 
		{
  		   var user = document.getElementById("login");
  		   var clave = document.getElementById("passw");
  		
  		  return "login=" + encodeURIComponent(user.value) +
                 "&passw=" + encodeURIComponent(clave.value);
		}
 
		function valida() 
		{
  		  peticion_http = inicializa_xhr();
  		  if(peticion_http) 
  		  {
    	    peticion_http.onreadystatechange = procesaRespuesta();
    	    peticion_http.open("POST", "http://www.sistemagrial.es/sig/service/autentication.php", true);
 
    	    peticion_http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    	    var query_string = crea_query_string();
    	    peticion_http.send(query_string);
    	    
  		  }
		}
		
		
 
		function procesaRespuesta() 
		{
  		   if(peticion_http.readyState == READY_STATE_COMPLETE) 
  		   {
    		 if(peticion_http.status == 200) 
    		 {
    		   document.getElementById("respuesta").innerHTML = peticion_http.responseText;
    		   
    	     }
    	     
  		   }
  		  
		}
        
	
	 	</script>
	 	
<div data-role="page" id="inicio">
	 	
	 	<div data-role="header">
	 	 <h1>Login</h1>
	 	</div>
	 	
	 	<div data-role="content">
	 	 <form id="formulario" action="http://www.sistemagrial.es/sig/service/autentication.php" method="POST">
	 	 <input type="text" id="login" name="login" placeholder="login" required>
	 	 <input type="password" id="passw" name="passw" placeholder="passw" required>
	 	 <input type="submit" value="Acceder" id="submit" onClick="valida()">
	 	 <input type="reset" name="Borrar" id="Borrar" value="Reset" class="boton">
	 	 </form>
	 	</div> 
	 	</div>
	 	<div id="respuesta">
	 	</div>
  #2 (permalink)  
Antiguo 24/02/2015, 10:45
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: No me funciona el script

Si estás realizando una petición asíncrona, debes de cancelar el envío de los datos del formulario para que pueda ejecutarse el código que nos muestras.

En lugar de ejecutar la primera función al darle clic al botón de envío, mejor asígnala al formulario cuando se produzca el evento submit que es el que ocurre cuando se envían los datos. El método preventDefault es el que necesitas utilizar para eso.

Código HTML:
Ver original
  1. <form id="formulario" onsubmit="cancelar(event)">

Código Javascript:
Ver original
  1. function cancelar(evento){
  2.     evento.preventDefault(); //Cancelo el envío de los datos
  3.     valida(); //Ejecuto la primera de tus funciones
  4. }

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 25/02/2015, 02:26
 
Fecha de Ingreso: febrero-2015
Mensajes: 8
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: No me funciona el script

He probado lo que me has dicho, pero sigue sin solucionarse porque parece que va a pasar de página y vuelve a la página de login. Gracias por la ayuda de todas formas.
  #4 (permalink)  
Antiguo 25/02/2015, 03:06
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: No me funciona el script

Si nos mostraras el código actualizado y nos dijeras qué es lo que sucede ahora, podremos ayudarte.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 25/02/2015, 04:04
 
Fecha de Ingreso: febrero-2015
Mensajes: 8
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: No me funciona el script

Este es el código actualizado:
Código:
<script>
	    
	    function cancelar(event)
	    {
	       event.preventDefault();
	       valida();
	    }

		var READY_STATE_COMPLETE=4;
		var peticion_http = null;
		var XX;
 
		function inicializa_xhr()
		{
  			if(window.XMLHttpRequest) 
  			{
    		  return new XMLHttpRequest(); 
  		    }else if(window.ActiveXObject) 
  		    {
    		  return new ActiveXObject("Microsoft.XMLHTTP");
  		    }	 
		}
 
		function crea_query_string() 
		{
  		   var user = document.getElementById("login");
  		   var clave = document.getElementById("passw");
  		
  		  return "login=" + encodeURIComponent(user.value) +
                 "&passw=" + encodeURIComponent(clave.value);
		}
 
		function valida() 
		{
  		  peticion_http = inicializa_xhr();
  		  if(peticion_http) 
  		  {
    	    peticion_http.onreadystatechange = procesaRespuesta();
    	    peticion_http.open("POST", "http://www.sistemagrial.es/sig/service/autentication.php", true);
 
    	    peticion_http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    	    var query_string = crea_query_string();
    	    peticion_http.send(query_string);
    	    
  		  }
		}
		
		
 
		function procesaRespuesta() 
		{
  		   if(peticion_http.readyState == READY_STATE_COMPLETE) 
  		   {
    		 if(peticion_http.status == 200) 
    		 {
    		   document.getElementById("respuesta").innerHTML = peticion_http.responseText;
    		   
    	     }
    	     
  		   }
  		  
		}
        
	
	 	</script>
	 	
	 	
	 	
	
	</head>
  
  <body onload="init();">
	 	
	 	<div data-role="page" id="inicio">
	 	
	 	<div data-role="header">
	 	 <h1>Login</h1>
	 	</div>
	 	
	 	<div data-role="content">
	 	 <form id="formulario" onsubmit="cancelar(event)">
	 	 <input type="text" id="login" name="login" placeholder="login" required>
	 	 <input type="password" id="passw" name="passw" placeholder="passw" required>
	 	 <input type="submit" value="Acceder" id="submit" onClick="valida()">
	 	 <input type="reset" name="Borrar" id="Borrar" value="Reset" class="boton">
	 	 </form>
	 	</div> 
	 	</div>
	 	<div id="respuesta">
	 	</div>
Lo que sucede es que hace un amago de que a pasar de la página de login pero vuelve a ella al instante.
  #6 (permalink)  
Antiguo 25/02/2015, 14:17
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: No me funciona el script

Quita el onclick="valida()" del botón de envío y prueba.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #7 (permalink)  
Antiguo 26/02/2015, 02:10
 
Fecha de Ingreso: febrero-2015
Mensajes: 8
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: No me funciona el script

Acabo de probar lo de quitar el onclick y sigue haciendo lo mismo

Etiquetas: formulario, funcion, html, input, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:33.