Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Ajax No Procesa Informacion

Estas en el tema de Ajax No Procesa Informacion en el foro de Frameworks JS en Foros del Web. Que tal , estoy desarrollando una aplicacion de prueba en Ajax para implementarla en una web de una empresa, el problema es que es la ...
  #1 (permalink)  
Antiguo 21/02/2010, 22:58
 
Fecha de Ingreso: febrero-2010
Mensajes: 3
Antigüedad: 14 años, 9 meses
Puntos: 0
Sonrisa Ajax No Procesa Informacion

Que tal , estoy desarrollando una aplicacion de prueba en Ajax para implementarla en una web de una empresa, el problema es que es la primera vez que uso Ajax(y javascript a fondo), y tengo problemas para hacerlo trabajar.

Lo estoy haciendo en php, y esta basado en 3 archivos, el pruebaAjax.php que es la interfaz con el usuario, el jsAjax.js q es el archivo que contiene el codigo Javascript y el respuestaAjax.php que es donde se procesa la peticion para luego devolverla a la primera. Juntos deberian hacer un sistema de confirmacion de identificacion de usuario en el sistema, el usuario pone su nombre y clave en la interfaz, y se le devuelve un valor de correcto o incorrecto a un input de tipo hidden, el que luego sera evaluado por una funcion javascript para saber si el usuario se logeo de manera exitosa.

El sistema esta enviando la informacion por medio del script, pero lo que no esta pasando es que en el respuestaAjax se genere la informacion que necesito que llegue al pruebaAjax, y debido a esto no se sabe si se autentico o no.(he revisado que haiga congruencia con las columnas de la BD, y por ahi todo esta ok)

He probado leyendo tutoriales hasta el cansancio los cuales me han ayudado a crear el ajax y a tener una nocion de como se devuelve la informacion con php.
Una de las webs principales ha sido la de w3schools que tiene un ejemplo en php, pero aun siguiendo sus instrucciones no logro hacer que la mia funcione.

Si pudieran ayudarme les estaria muy agradecido

pruebaAjax.php

Código PHP:
<?
include('conecta.php');
?>

<html>
<head>
   <title>Usando js</title>

<script type="text/javascript" src="jsAjax.js">
</script>
</head>

<body>


Nombre de operador:
<select name="nombreOperador" id="nombreOperador" onChange="habilitaEnvio(this)">
<option value=0>Seleccione opcion</option>

<?
    
try
   {
   
$con= new ClsConexion();
   
$sql="SELECT * FROM operadores";
   
$record=$con->ejecutar($sql);
   while(
$row=$con->sacafila($record))
    { echo 
'<option value='.$row["id"].'>'.$row["nombre"].'</option>';}
   }
   catch(
Exception $ex)
   {
     echo 
$ex;
   }
?>
</select>
</br>
Clave: <input type="password" name="claveOperador" disabled="true" id="claveOperador"  />
<input type="submit" name="submitOperador" id="submitOperador" disabled="true" onClick="procesaOperador();verificaEstado()" />


<span id=operadorConfirmado></span>
<input type="hidden" name="claveConfirmada" id="claveConfirmada" />


</body>
</html>
jsAjax.js

Código:
function creaAjax()	{

var httpvar=false;
 	try {
 		httpvar = new ActiveXObject("Msxml2.XMLHTTP");
 	} catch (e) {
 		try {
 			httpvar = new ActiveXObject("Microsoft.XMLHTTP");
 		} catch (E) {
 			httpvar = false;
 		}
  	}

	if (!httpvar && typeof XMLHttpRequest!='undefined') {
 		httpvar = new XMLHttpRequest();
	}
	return httpvar;


}

function procesaOperador()
{

     var cod=document.getElementById('nombreOperador').options[document.getElementById('nombreOperador').selectedIndex].value;
     var cla=document.getElementById('claveOperador').value;
     var parametros="codigo="+cod+"&clave="+cla;
     var xmlhttp=creaAjax();

      var url="respuestaAjax.php";
      xmlhttp.open("POST",url,true);
      xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      xmlhttp.onreadystatechange=function()
      {
        if(xmlhttp.readyState==4)
        {
         document.getElementById('claveConfirmada').value=xmlhttp.responseText;
        }
      }

      xmlhttp.send(parametros);

}


function verificaEstado()
{ var confirmacion="";
  if(document.getElementById('claveConfirmada').value=="correcto")
  {
    confirmacion="Usuario Autorizado";
    document.getElementById('claveOperador').disabled=true;
    document.getElementById('submitOperador').disabled=true;
  }
  else if(document.getElementById('claveConfirmada').value=="incorrecto")
  {
    confirmacion="Clave Incorrecta";
  }

  document.getElementById('operadorConfirmado').innerHTML=confirmacion;
}



function habilitaEnvio(sel)
{
     var valor=sel.options[sel.selectedIndex].value;

    if(valor!=0)
  {
   document.getElementById('claveOperador').disabled=false;
   document.getElementById('submitOperador').disabled=false;
  }
  else
  {
  document.getElementById('claveOperador').disabled=true;
   document.getElementById('submitOperador').disabled=true;
  }
}
respuestaAjax.php

Código PHP:
<?php

include('conecta.php');

$codigo=$_POST["codigo"];
$clave=$_POST["clave"];


$con= new ClsConexion();
$query="SELECT * FROM operadores";
$record=$con->ejecutar($query);

while(
$row=$con->sacafila($record))
    {
$array[$row['id']]=$row['clave'];}


if(
$clave==$array[$codigo])
{
$mensaje="correcto";}
else
{
$mensaje="incorrecto";}

echo 
$mensaje;

?>
  #2 (permalink)  
Antiguo 22/02/2010, 15:27
 
Fecha de Ingreso: febrero-2010
Mensajes: 3
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Ajax No Procesa Informacion

Intente modificar el codigo para ver que obtenia del respuestaAjax.php, y me sorprendio ver que me devolvia la informacion correcta, ahora mi web si imprime, pero lo malo es que por alguna razon no hace la comparacion de cadenas, y no puedo bloquear los botones submit y el input para password.
Creo que este error es mas de tipo Javascript, ya que el ajax funciona bien.
El error lo encontre aca y lo he resaltado en rojo (jsAjax.js):

Código:
function procesaOperador()
{

     var cod=document.getElementById('nombreOperador').options[document.getElementById('nombreOperador').selectedIndex].value;
     var cla=document.getElementById('claveOperador').value;
     var parametros="codigo="+cod+"&clave="+cla;
     var xmlhttp=creaAjax();

      var url="respuestaAjax.php";
      xmlhttp.open("POST",url,true);
      xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      xmlhttp.onreadystatechange=function()
      {
        if(xmlhttp.readyState==4)
        {
         var texto=xmlhttp.responseText;

           var confirmacion=texto;
           if(texto=="correcto")
            {
              confirmacion="Usuario Autorizado";
              document.getElementById('claveOperador').disabled=true;
              document.getElementById('submitOperador').disabled=true;
            }
            else if(texto=="incorrecto")
            {
              confirmacion="Clave Incorrecta";
            }


         document.getElementById('operadorConfirmado').innerHTML=confirmacion;
        }
      }

      xmlhttp.send(parametros);

}
Por alguna razon no se ejecuta ni lo que esta en el "if" ni en el "else if", por lo que la variable confirmacion queda con el valor del responsetext, y eso que lo que se obtiene del respuestaAjax.php es una cadena


Código PHP:
<?php

include('conecta.php');

$codigo=$_POST["codigo"];
$clave=$_POST["clave"];

$con= new ClsConexion();
$query="SELECT * FROM operadores";
$record=$con->ejecutar($query);

while(
$row=$con->sacafila($record))
    {
$array[$row['id']]=$row['clave'];}


if(
$clave==$array[$codigo])
{
$mensaje="correcto";}
else
{
$mensaje="incorrecto";}

echo 
$mensaje;

?>
No se que hacer, parece tan sencillo corregirlo pero no encuentro error por mas que busco.

Saludos
  #3 (permalink)  
Antiguo 22/02/2010, 16:11
 
Fecha de Ingreso: febrero-2010
Mensajes: 3
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Ajax No Procesa Informacion

Solucione el problema usando variables de numeros en lugar de palabras.
Aun asi no entiendo porque no se puede hacer la comparacion de palabras con javascript y que te de el resultado esperado, es que acaso hay que usar algun estandar para la comunicacion de cadenas entre bloques de php y javascript? Alguna conversion?

Saludos

Etiquetas: ajax, logeo, 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 10:45.