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

Response.redirect con AJAX

Estas en el tema de Response.redirect con AJAX en el foro de Frameworks JS en Foros del Web. Hola a todos: Tengo una consulta: estoy comenzando a utilizar en forma muy basica ajax con asp y SQLServer, e hice una pagina web q ...
  #1 (permalink)  
Antiguo 20/10/2005, 07:43
Avatar de Dorita  
Fecha de Ingreso: junio-2005
Ubicación: Entre la silla y el escritorio
Mensajes: 97
Antigüedad: 19 años, 6 meses
Puntos: 0
Response.redirect con AJAX

Hola a todos:

Tengo una consulta: estoy comenzando a utilizar en forma muy basica ajax con asp y SQLServer, e hice una pagina web q valida si el rut (rol unico tributario con el q se identifica a cada persona en Chile) esta correcto o no. si esta correcto, verifica si existe en la base de datos, si está quiero que lo derive a una página, si no que lo derive a otra. todo esto en la página que trabaja en 2º plano en ajax. trate de hacerlo con response.redirect, pero me tira error. este es el código:

Código PHP:
Sub Requerimiento()
        If 
Request.QueryString("txt_rutUsuario") <> "" Then
            cliente 
Request.QueryString("txt_rutUsuario")
            
SQL "SELECT id_requerimiento, servicio, id_ejecutivo, observacion, estado, fechaIngreso, insistencia FROM TB_Requerimiento WHERE    rutCliente = '"&cliente&"'; "
            
Set RS Conex.Execute(SQL)
        
            If 
Not(RS.EOFThen
                Response
.Redirect("requerimientoPendiente.asp")
            Else
                
Response.Redirect("repeticion.asp")
            
End If        
        
End If        
    
End Sub 

y se q es ajax, por q esto mismo lo probe en una pagina sin ajax y inmediatamente me redirecciona.

si alguien desea el ejemplo de validacion, q me lo pida a mi correo o q postee en el mensaje.
gracias de antemano, salu2.-

__________________

<nick>Dorita</nick>...si lo sé, soy una ñoña ;)
  #2 (permalink)  
Antiguo 20/10/2005, 07:58
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 3 meses
Puntos: 381
Qué tal dorita,

si realizas la consulta usando ajax (asincrónicamente) el asp no debería devolver una acción pues quien recibe la respuesta es el objeto ajax que has creado.

Más bien creo que deberías poner el condicional dentro de la parte javascript que recoge el resultado enviado por el servidor.

Por ejemplo, en el asp poner algo así

Código:
If Not(RS.EOF) Then 
                Response.write("bien") 
            Else 
                Response.write("mal") 
            End If
eso es lo que le llegaría al documento en el navegador y podrías entonces usar un condicional js tipo....
Código:
if(objeto == "bien"){
   location.href = "requerimientoPendiente.asp"
}
  #3 (permalink)  
Antiguo 20/10/2005, 08:27
Avatar de Dorita  
Fecha de Ingreso: junio-2005
Ubicación: Entre la silla y el escritorio
Mensajes: 97
Antigüedad: 19 años, 6 meses
Puntos: 0
lo probare

Gracias Tunait por la pronta respuesta, lo pruebo y te cuento.-
salu2.-
__________________

<nick>Dorita</nick>...si lo sé, soy una ñoña ;)
  #4 (permalink)  
Antiguo 21/10/2005, 07:03
Avatar de Dorita  
Fecha de Ingreso: junio-2005
Ubicación: Entre la silla y el escritorio
Mensajes: 97
Antigüedad: 19 años, 6 meses
Puntos: 0
no funciona...

Hola Tunait, que tal? sabes, no me funciona tu propuesta, a lo mejor la estoy implementando mal, pero asi lo tengo:

Código HTML:
verificaCliente.asp
<%		
	Sub Requerimiento()
		If Request.QueryString("txt_rutUsuario") <> "" Then
			cliente = Request.QueryString("txt_rutUsuario")
			SQL = "SELECT id_requerimiento, servicio, id_ejecutivo, observacion, estado, fechaIngreso, insistencia FROM TB_Requerimiento WHERE	rutCliente = '"&cliente&"'; "
			Set RS = Conex.Execute(SQL)
		
			If Not(RS.EOF) Then
				Response.Write("no ingresado")
			Else
				Response.Write("ingresado")
			End If		
		End If		
	End Sub
%>
Código HTML:
controlUsuario.asp

<script language="javascript" type="text/javascript">
	function handleHttpResponse(){
		if(http.readyState == 4){
			if(http.status == 200){
				if(http.responseText.indexOf('invalid') == -1){
					//Armamos un array, usando la coma para separar elementos
					results = http.responseText.split(",");
					
					if (results[0] == "no ingresado"){
						location.href = "repeticion.asp"
					}
					if (results[0] == "ingresado"){
						location.href = "requerimientoPendiente.asp"
					} 
					
					document.getElementById("campoMensaje").innerHTML = results[0];
					enProceso = false;
				}
			}
		}
	}
</script> 

estoy haciendo algo mal?
__________________

<nick>Dorita</nick>...si lo sé, soy una ñoña ;)
  #5 (permalink)  
Antiguo 21/10/2005, 07:43
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 22 años, 5 meses
Puntos: 0
te arroja algun error ???
__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
  #6 (permalink)  
Antiguo 21/10/2005, 07:49
Avatar de Dorita  
Fecha de Ingreso: junio-2005
Ubicación: Entre la silla y el escritorio
Mensajes: 97
Antigüedad: 19 años, 6 meses
Puntos: 0
Hola bhonox, mira, no me entrega ningun resultado y aparece el triangulo amarillo en el borde inferior izquierdo, que dice "error desconocido en tiempo de ejecucion".
salu2.-
__________________

<nick>Dorita</nick>...si lo sé, soy una ñoña ;)
  #7 (permalink)  
Antiguo 21/10/2005, 08:02
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 22 años, 5 meses
Puntos: 0
cuando muestras la pagina controlUsuario.asp muestras todo su contenido??
pq lo toy validando en base a un ejemplo puesto aca en los foros y me queda la duda si esta declarado tu http
segun el ejemplo que te digo yo:
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}

como ves aqui se define xmlhttp que seria como tu variable, si tienes mas codigo correspondiente a javascript puedes ponerlo por favor.
__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
  #8 (permalink)  
Antiguo 21/10/2005, 08:21
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 22 años, 5 meses
Puntos: 0
creo q encontre de donde sacaste el codigo:
http://www.soloasp.com.ar/vereje.asp?eje=56

basandome en ese ejemplo realice una prueba de ese codigo en php y me funciono correctamente, por ende lo pase a asp y te lo envio
index.asp
Código PHP:
<html>
<
head>
<
script language="javascript" type="text/javascript">
function 
handleHttpResponse() { 
    if (
http.readyState == 4) { 
       if (
http.status == 200) { 
          if (
http.responseText.indexOf('invalid') == -1) {
             
// Armamos un array, usando la coma para separar elementos
             
results http.responseText.split(","); 
             
document.getElementById("campoMensaje").innerHTML results[0];
             
enProceso false;
          }
       }
    }
}

function 
verificaUsuario() {
    if (!
enProceso && http) {
       var 
valor escape(document.getElementById("emailUsuario").value);
       var 
url "consulta.asp?emailUsuario="valor;
       
http.open("GET"urltrue);
       
http.onreadystatechange handleHttpResponse;
       
enProceso true;
       
http.send(null);
    }
}

function 
getHTTPObject() {
    var 
xmlhttp;
    
/*@cc_on
    @if (@_jscript_version >= 5)
       try {
          xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
       } catch (e) {
          try {
             xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
          } catch (E) { xmlhttp = false; }
       }
    @else
    xmlhttp = false;
    @end @*/
    
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
       try {
          
xmlhttp = new XMLHttpRequest();
       } catch (
e) { xmlhttp false; }
    }
    return 
xmlhttp;
}

var 
enProceso false// lo usamos para ver si hay un proceso activo
var http getHTTPObject(); // Creamos el objeto XMLHttpRequest

</script>
</head>

<body>
<form action="post">
    Ingrese su email:
    <input type="text" name="emailUsuario" id="emailUsuario">
    <INPUT type="Button" value="Verificar si existe" onclick="verificaUsuario();">
</form>
<div id="campoMensaje"></div>
</body>
</html> 
consulta.asp

Código PHP:
<%
if 
request.querystring("emailUsuario") = "[email protected]then
       response
.write "Si, existe"
    
else
       
response.write "No existe"
 
end if
%>

si coloca el correo mio@mio.cl escribira que existesi coloca cualquier otra cosa colocara No existe

Saludos

__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
  #9 (permalink)  
Antiguo 21/10/2005, 08:28
Avatar de Dorita  
Fecha de Ingreso: junio-2005
Ubicación: Entre la silla y el escritorio
Mensajes: 97
Antigüedad: 19 años, 6 meses
Puntos: 0
problemas con redireccion

Gracias Bhonox por la ayuda, pero lo que quiero yo es que si el mail (por ejemplo) existe, que me redireccione a otra página, y es la redireccion con javascript la que no me funciona. pero lo que es validar la existencia del dato en la bd funciona ok.
gracias nuevamente por tu tiempo,
salu2.-
__________________

<nick>Dorita</nick>...si lo sé, soy una ñoña ;)
  #10 (permalink)  
Antiguo 21/10/2005, 12:07
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 3 meses
Puntos: 381
Saludos Dorita y Bhonox,

vamos a ver si la menos entra en la función y qué resultado trae

prueba eso

Código:
<script language="javascript" type="text/javascript">
	function handleHttpResponse(){
		if(http.readyState == 4){
			if(http.status == 200){
				if(http.responseText.indexOf('invalid') == -1){
					//Armamos un array, usando la coma para separar elementos
					results = http.responseText.split(",");
					alert(results[0])
					if (results[0] == "no ingresado"){
						location.href = "repeticion.asp"
					}
					if (results[0] == "ingresado"){
						location.href = "requerimientoPendiente.asp"
					} 
					
					document.getElementById("campoMensaje").innerHTML = results[0];
					enProceso = false;
				}
			}
		}
	}
</script>
...y dime si sale un alert y qué dice
  #11 (permalink)  
Antiguo 21/10/2005, 13:16
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 22 años, 5 meses
Puntos: 0
Buenas tunait tanto tiempo..

yo creo q el problema de dorita radica en este archivo verificaCliente.asp

pq no pruebas ingresando por tu pagina normal a este link verificaCliente.asp
?txt_rutUsuario=1

solo para probar, quiero ver si el archivo te retorna el mensaje por pantalla...

como nota:
haces un split "," y esta demas, ya que no retornas un solo valor.
__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
  #12 (permalink)  
Antiguo 21/10/2005, 13:42
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 3 meses
Puntos: 381
Muy buenas Bhonox

Es posible que sea algo de la parte asp

Respecto a lo del split(), es, efectivamente, innecesario, aunque tampoco tiene por qué devolver error o no funcionar pues si no hay comas devolverá un array de 1 elemento en la posición 0 que es a lo que se está llamando
  #13 (permalink)  
Antiguo 21/10/2005, 13:45
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 22 años, 5 meses
Puntos: 0
exacto Tunait, de igual manera probe el split si venia un valor, y el results[0] funcionaria...

yo creo que el problema radica en el asp, creo que hay que esperar que Dorita nos indique los mensajes que retornan sus pruebas...
saludos.
__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
  #14 (permalink)  
Antiguo 21/10/2005, 13:50
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 3 meses
Puntos: 381
Yess, esperemos a ver qué nos cuenta Dorita

Un saludo
  #15 (permalink)  
Antiguo 21/10/2005, 16:00
Avatar de Dorita  
Fecha de Ingreso: junio-2005
Ubicación: Entre la silla y el escritorio
Mensajes: 97
Antigüedad: 19 años, 6 meses
Puntos: 0
problemas con redireccion javascript y ajax

Hola Tunaits, bhonox, probe como me dijeron con el alert y esto es lo que me dice:
Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Verficación usuario Tango</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
ingresado
</head>
<body>
</body>
</hmtl>

y este es el codigo completo:

controlUsuario.asp
Código HTML:
<script language="javascript" type="text/javascript">
	function handleHttpResponse(){
		if(http.readyState == 4){
			if(http.status == 200){
				if(http.responseText.indexOf('invalid') == -1){
					//Armamos un array, usando la coma para separar elementos
					results = http.responseText.split(",");
					alert(results[0])			
					
					if (results[0] == "no ingresado"){
						location.href = "repeticion.asp"
					}
					if (results[0] == "ingresado"){
						location.href = "requerimientoPendiente.asp"
					} 		
							
					document.getElementById("campoMensaje").innerHTML = results[0];
					enProceso = false;
				}
			}
		}
	}
	
	function verificaCliente(){
		if(!enProceso && http){
		var valor = escape(document.getElementById("txt_rutUsuario").value);
		var url = "verificaCliente.asp?txt_rutUsuario=" + valor;
		http.open("GET", url, true);
		http.onreadystatechange = handleHttpResponse;
		enProceso = true;
		http.send(null);
		}
	}
	
	function getHTTPObject(){
	var xmlhttp;
	/*@cc_on
	@if(@_jscript_version >=5)
		try{
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
			}catch(e){
				try{
					xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
					}catch(E) {xmlhttp = false;}	
				}
				@else
					xmlhttp = false;
					@end@*/				
					if(!xmlhttp && typeof XMLHttpRequest != 'undefined'){
						try{
							xmlhttp = new XMLHttpRequest();
						}catch(e) {xmlhtp = false;}
					}
					return xmlhttp;
	}
	
	var enProceso = false; //se utiliza para verificar si existen procesos activos
	var http = getHTTPObject(); // Creamos el objeto XMLHttpRequest
</script>

</head>

<body>
<form action="post" name="controlUsuario">
<br><br><br><br>
<table width="40%" height="86%"  border="1" align="center">
  <tr>
    <td height="100%" valign="top">
	<br><br>
	<div align="center">Control de Requerimientos<br><br><br><br>
	<label>Ingrese Rut Cliente:</label>&nbsp;&nbsp;
	<input type="text" name="txt_rutUsuario" id="txt_rutUsuario" size="15">
	</div><br><br>
	<div align="center">
	<input type="button" value="Verificar" onClick="verificaCliente()">
	</div>
	<br><br>
	<div id="campoMensaje"></div>
	</td>
  </tr>
</table>
</form> 
verificaCliente.asp
Código HTML:
liente = Request.QueryString("txt_rutUsuario")	
	
	If (cliente = "") Then
		Response.Write("Ingrese rut del cliente")		
	ElseIf (Len(cliente) <8) Then
		Response.Write("Rut incompleto. Ingr&eacute;selo nuevamente")
	Else
		call ValidaRut		
	End If
%>
</head>

<body>
<%		
	Sub Requerimiento()
		If Request.QueryString("txt_rutUsuario") <> "" Then
			cliente = Request.QueryString("txt_rutUsuario")
			SQL = "SELECT id_requerimiento, servicio, id_ejecutivo, observacion, estado, fechaIngreso, insistencia FROM TB_Requerimiento WHERE	rutCliente = '"&cliente&"'; "
			Set RS = Conex.Execute(SQL)
		
			If Not(RS.EOF) Then
				Response.Write("ingresado")
			Else
				Response.Write("no ingresado")
			End If		
		End If		
	End Sub
el sub de verificarut no se los puse, por q no influye en nada el q lo saque o lo ponga...


de antemano muchisimas gracias chicos por toda vustra ayuda...
salu2.-
__________________

<nick>Dorita</nick>...si lo sé, soy una ñoña ;)
  #16 (permalink)  
Antiguo 21/10/2005, 21:35
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 22 años, 5 meses
Puntos: 0
Dorita,
sacale las etiquetas html al archivo verificaCliente.asp
es decir, todas las <html><body><head> etc. etc.
la idea es q solo te devuelva el valor ingresado o no ingresado
Saludos.
__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
  #17 (permalink)  
Antiguo 24/10/2005, 08:05
Avatar de Dorita  
Fecha de Ingreso: junio-2005
Ubicación: Entre la silla y el escritorio
Mensajes: 97
Antigüedad: 19 años, 6 meses
Puntos: 0
lo probaré

OK BHONOX, lo pruebo y te cuento. gracias por tu ayuda y tu tiempo, salu2.-
__________________

<nick>Dorita</nick>...si lo sé, soy una ñoña ;)
  #18 (permalink)  
Antiguo 24/10/2005, 13:55
Avatar de Dorita  
Fecha de Ingreso: junio-2005
Ubicación: Entre la silla y el escritorio
Mensajes: 97
Antigüedad: 19 años, 6 meses
Puntos: 0
Gracias!!! funciona OK

Gracias Tunait y BHONOX, funciona genial!! y lo único que había que hacerle para que redireccionara con javascript era quitandole a la página verificaCliente.asp (la q trabaja la consulta en 2º plano) todas las etiquetas html, dejando sólo código asp.
muchas gracias a ambos, y espero poder corresponderles a esta ayuda algun día.

salu2.-
__________________

<nick>Dorita</nick>...si lo sé, soy una ñoña ;)
  #19 (permalink)  
Antiguo 25/10/2005, 07:36
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 22 años, 5 meses
Puntos: 0
De nada... de eso se trata, de poder ayudar y recibir...
Saludos.
__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
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:50.