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

Asignar responseText a una variable.

Estas en el tema de Asignar responseText a una variable. en el foro de Frameworks JS en Foros del Web. Que tal amigos del foro. En el codigo (ver abajo) intento validar una cadena de texto con otra alojada en una SESSION. Esto desde el ...
  #1 (permalink)  
Antiguo 09/04/2011, 13:16
Avatar de edgwin  
Fecha de Ingreso: abril-2011
Ubicación: Guadalajara, Jalisco, Mexico
Mensajes: 47
Antigüedad: 13 años
Puntos: 1
Asignar responseText a una variable.

Que tal amigos del foro.

En el codigo (ver abajo) intento validar una cadena de texto con otra alojada en una SESSION. Esto desde el archivo valCaptcha.php y el resultado ("f" o "v") deseo me lo coloque en el textfield2. El problema es que en el segundo campo, me aparece "undefined". ¿Alguien me puede ayudar con mi problema?


NOTA: Ya intente tanto "ajax.open("GET","..",false)" como "ajax.open("GET","..",true)"

Saludos!

Nombre del archivo index.php

Cita:
<?php
session_start();
$_SESSION["captcha"] = 'Prueba';
?>
..
<script type="text/javascript">
<!--
function nuevoAjax(){
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
return xmlhttp;
}

var retVal;

function validaCaptcha(texto){
if (texto != ''){
ajax = nuevoAjax();
ajax.open("GET","valCaptcha.php?t="+texto,false);
ajax.send(null);
ajax.onreadystatechange=function() {
if (ajax.readyState==4 ) {
retVal = ajax.responseText;
}
result = retVal;
}
}else{
result = "f";
}
}

function val(texto){
document.getElementById('textfield2').value = validaCaptcha(texto);
}
//-->
</script>
</head>
<body>
<input type="text" name="textfield" id="textfield" />
<input type="submit" name="button" id="button" value="Enviar" onClick = "val(document.getElementById('textfield').valu e);"/>
<br /><br /><input type="text" name="textfield2" id="textfield2" />
</body>
...
el codigo anterior llama a este archivo: valCaptcha.php
Cita:
<?php
session_start();
$txtUsr = $_GET["t"];
if (!isset($_SESSION["captcha"]))
{
echo "captcha no definido";
exit();
}
if ($txtUsr == '' || $txtUsr != $_SESSION["captcha"])
{
echo "f";
}else
{
echo "t";
}
?>

Última edición por edgwin; 09/04/2011 a las 13:24
  #2 (permalink)  
Antiguo 09/04/2011, 17:09
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Asignar responseText a una variable.

se debe a que solo evalúas ajax.readyState==4 , y te falta ajax.status==200 (HTTP OK), debes de evaluar ambos
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 09/04/2011, 21:22
 
Fecha de Ingreso: febrero-2009
Mensajes: 64
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: Asignar responseText a una variable.

Tengo un problema parecido al tuyo, prueba esto,

Cambia ajax.open("GET","valCaptcha.php?t="+texto,false);
por: ajax.open("GET","valCaptcha.php?t="+texto,true);

y define var retVal; asi: var retVal="Prueba";

y verifica que pasa.

Segun lo que estoy revisando el problema esta en que cuando ejecutas

function val(texto){
document.getElementById('textfield2').value = validaCaptcha(texto);
}

No espera a que se ejecute completamente validaCaptcha(texto); y entonces devuelve el valor de retVal que en tu caso es undefinied.

De hecho añade un alert despues de retVal = ajax.responseText; a ver que devuelve, algo asi alert(retVal);

Revisa si tu caso es el mismo?
  #4 (permalink)  
Antiguo 11/04/2011, 15:26
Avatar de edgwin  
Fecha de Ingreso: abril-2011
Ubicación: Guadalajara, Jalisco, Mexico
Mensajes: 47
Antigüedad: 13 años
Puntos: 1
Respuesta: Asignar responseText a una variable. (RESUELTO)

Lo resolvi, deje el codigo de index.php de la siguiente manera:

Cita:
<?php
session_start();
$_SESSION["captcha"] = 'Prueba';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
<script type="text/javascript">
<!--
function nuevoAjax(){
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
return xmlhttp;
}

function validaCaptcha(texto){
if (texto != ''){
ajax = nuevoAjax();
ajax.open("GET","valCaptcha.php?t="+texto,true);
ajax.send();
ajax.onreadystatechange=function() {
if (ajax.readyState==4 && ajax.status==200) {
asignaTexto(ajax.responseText);
}
}
}else{
asignaTexto("f");
}
}

function asignaTexto(str){
document.getElementById('textfield2').value = str;
}

//-->
</script>
</head>
<body>
<p>
<input type="text" name="textfield" id="textfield" />
<input type="submit" name="button" id="button" value="Enviar" onClick = "validaCaptcha(document.getElementById('textfield' ).value);"/>
<br /><br><input type="text" name="textfield2" id="textfield2" />
</p>
</body>
</html>
Gracias y saludos!

Etiquetas: ajax, responsetext, variables
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 18:33.