¿Hay alguna manera de decirle en ASP que haga un salto y coja valores de los menús anteriores?

Tengo un problemilla. En mi web www.aunpaso.com tienes 3 campos donde eliges si quieres comprar o alquilar, la localidad y el tipo de inmueble. Le das al botón y te lleva a otra página donde puedes volver a filtrar (filtrado.asp). En esta página he metido este código:
<%
If Request.QueryString("inmID")="7" OR Request.QueryString("inmID")="6" OR Request.QueryString("inmID")="5" OR Request.QueryString("inmID")="4" Then
Response.Redirect("filtrado2.asp")
End If
%>
Esto es para que si alguien elige alguno de estos valores (7="Oficina", 6="local", 5="Garaje" y 4="estudio"), no vaya a esa página, sino que vaya a otra, que he llamado filtrado2.asp, donde no vienen las opciones de dormitorios, habitaciones, armarios, etc, porque es estúpido seleccionar eso de un garaje, por ejemplo. El problema es que el salto lo hace perfectamente, pero no pasa los valores de los 3 campos que elegimos al principio, sino que simplemente, salta a esa página. ¿Hay alguna manera de decirle en ASP que haga ese salto, pero que coja los valores de los menús anteriores?.

14 respuestas

Respuesta
1
Emmm... tienes dos tipos de soluciones...
1- La primera no es nada complicada...
en filtrado.asp cuando haces el Response. Redirect("filtrado2.asp") ponle las variables a la página... Así:
'variable v_saltar
v_saltar = "filtrado2.asp?campo1=" & Request.QueryString("campo1") & "&campo2=" & Request.QueryString("campo2") & "&campo3=" & Request.QueryString("campo3")
Response.Redirect(v_saltar)
Y luego en filtrado2.asp recibes las variables, Request. QueryString("campo1"),
Request. QueryString("campo2"),
Request. QueryString("campo3")
¿Listo?
2- La otra solución... debes aplicarla en la página que tiene el formulario. Mediante una función en JavaScript que cambie la propiedad ACTION del formulario según los campos seleccionados. Si gustas puedo ahondar más en esta solución, pero creo que con la primera ya estas listo.
Hola polacocl. He hecho lo que me dices, pero me da un error. La de filtrado hace el salto perfecto, pero filtrado2 no lo hace bien, porque la ruta que escribe es la siguiente:
filtrado2.asp?%20categoryID=1&inmID=6&locID=1
¿De donde viene el %20? He probado a escribirlo en filtrado2 asi:
<%
Request.QueryString("campo1"),
Request.QueryString("campo2"),
Request.QueryString("campo3")
%>
Vamos con los símbolos de <%>, que en tu respuesta no estaban, pero me da el mismo error. ¿Qué puede ser? De todas maneras, si puedes, me mandas la función en javascript esa, que supongo que lo que hará sera que si eliges tal opción, te mande a una página, pero si eliges otra, pues a otra página. De todas maneras, cuando me la mandes, me la explicas un poquito, que no se mucho de javascript. Muchas gracias.
P.D. Mi correo es el siguiente, por si lo necesitas para algo con lo de los códigos [email protected]
%20 corresponde a un espacio (" ") en código URL. Quiere decir que se está colando un espacio...
revisa la cadena, "filtrado2.asp? categoryID=1&inmID=6&locID=1"
Entre el "?" y "categoryID" no debe haber espacios.
Respuesta
1
lo que pasa, es que los datos del formulario, los puedes ver en la página filtrado.asp, al pasar luego de esta a filtrado2.asp, entonces se pierde. Lo que puedes hacer, es pasar los datos del formulario desde la página filtrado.asp a filtrado2.asp por request.querystring, como haces anteriormente. esto has de ponerlo en la página filtrado.asp, donde llamas a filtrado2.asp, es decir quedaría asi: filtrado2.asp?campo1=....&campo2=... en vez de filtrado2.asp a secas.
Hola luislili. He intentado lo que me dices. Ahora lo he puesto así:
<%
If Request.QueryString("inmID")="7" OR Request.QueryString("inmID")="6" OR Request.QueryString("inmID")="5" OR Request.QueryString("inmID")="4" Then
Response.Redirect("filtrado2.asp?categoryID=request.querystring(categroyID)&inmID=request.querystring(inmID)&locID=request.querystring(locID)")
End If
%>
El problema es que escribe la ruta asi: http://localhost/local/filtrado2.asp?categoryID=request.querystring(categroyID)&inmID=request.querystring(inmID)&locID=request.querystring(locID)")), o sea que hace bien todo menos coger los valores de la consulta anterior. ¿Alguna solucion? Muchas gracias por tu ayuda
Response.Redirect("filtrado2.asp?categoryID=" & RESPONSE.WRITE(request.querystring(categroyID)) & "inmID=" & .........)
Pruébalo así...
Me da error igualmente. Ahora, lo tengo casi, pero me da un error. Lo he escrito así:
<%
If Request.QueryString("inmID")="7" OR Request.QueryString("inmID")="6" OR Request.QueryString("inmID")="5" OR Request.QueryString("inmID")="4" Then
Response.Redirect("filtrado2.asp?categoryID=" & Request.QueryString("categoryID")&"locID=" & Request.QueryString("locID")&"inmID=" & Request.QueryString("inmID"))
End If
%>
Lo unico que pasa, es que manda el vinculo así a la segunda página:
http://localhost/local/filtrado2.asp?categoryID=1locID=1inmID=7 y claro, deberia ser asi:
http://www.dominio.com/filtrado2.asp?categoryID=1&locID=1&inmID=7
Faltan las &. ¿Cómo lo pongo? He intentado mil combinaciones, pero no me sale
Response.Redirect("filtrado2.asp?categoryID=" & Request.QueryString("categoryID")&"&locID=" & Request.QueryString("locID")&"&inmID=" & Request.QueryString("inmID"))
Respuesta
1
Para ellos deberás crear un enelace donde se carguen los valeres
por ejemplo en el response. Redirect pon esto
"filtrado2.asp?tamaño="&request.querystrint("tamaño")&""
Y si quieres introducir más variables
Pues
"filtrado2.asp?tamaño="&request.querystrint("tamaño")&"&habitaciones="&request.querystring("habitaciones")&""
De esa forma en la siguiente página podrás volver a recoger los valores con el request. Querystring
ten encuenta que las únicos valores que permanecion en una página son las de session.
El resto de valores como los formularios o los querystring solo van a la siguiente página, pero en la segunda se pierden si no las trasladas
Hola basofu, He hecho lo que me has dicho, dejándolo así:
<%
If Request.QueryString("inmID")="7" OR Request.QueryString("inmID")="6" OR Request.QueryString("inmID")="5" OR Request.QueryString("inmID")="4" Then
Response.Redirect("filtrado2.asp?categoryID="&request.querystring("categoryID")&"locID="&request.querystring("locID")&"inmID="&request.querystring("inmID")"
)
End If
%>
Pero no funciona. No hace el salto a filtrado2.asp, y en filtrado.asp aparece el siguiente error:
Error de compilación de Microsoft VBScript error '800a0409'
Constante de cadena sin terminar
/local/filtrado.asp, line 5
Response.Redirect("filtrado2.asp?categoryID="&request.querystring("categoryID")&"locID="&request.querystring("locID")&"inmID="&request.querystring("inmID")"
¿Qué puede ser? Muchas gracias por tu ayuda y espero tu respuesta
filtrado2.asp?categoryID="&request.querystring("categoryID")&"locID="&request.querystring("locID")&"inmID="&request.querystring("inmID")"
filtrado2.asp?categoryID="&request.querystring("categoryID")&"&locID="&request.querystring("locID")&"&inmID="&request.querystring("inmID")"
Para que lo entiendas en realidad esto va asi
grabar.asp?nombre=Carlos&edad=14
ese es el link que crea
entonces Carlos lo sustituiras por
"&request.querystring("nombre")&" y edad por "&request.querystring("edad")&"
entonces quedara
grabar.asp?nombre="&request.querystring("nombre")&"&edad="&request.querystring("edad")&"
Te dejaste los & que esos van en el link
Hay unos & que son para señalar que son variables y otro & que son para definirlas
Ya lo he solucionado. Lo puse si:
Response.Redirect("filtrado2.asp?categoryID=" & Request.QueryString("categoryID")&"&locID=" & Request.QueryString("locID")&"&inmID=" & Request.QueryString("inmID"))
Respuesta
1
Pues si le quieres pasar los parámetros a la paigna filtrado2.asp es fácil
Response.Redirect("filtrado2.asp?inmID="&request.querystring("inmID"))
Respuesta
1
Sí se puede. Debes enviar un query string junto con la página, al llamarla. Supongamos que se te pierden los valores val01, val02 y val03. La solución es esta:
Dim strQueryString
strQueryString = "val01=" & Request.QueryString("val01")
& "&val02=" & Request.QueryString("val02")
& "&val03=" & Request.QueryString("val03")
Reques. Redirect "filtrado2.asp?" & strQueryString
¿Qué pasa con eso?
Que envías un query string que tú mismo construyes, y lo haces justo al llamar la página. El query string está después del nombre de la página que se llama, luego de un "?", y está formado por parejas variable-valor, estas parejas se separan por "&". O sea que lo que envías es algo así como
Filtrar2.asp?val01=23&val02=57&val03=56
Y perdona por no responder ayer, pero estaba súper ocupado.
Respuesta
1
en el response.redirect pon esto
response.redirect("filtrado2.asp?inmID="&request.querystring("inmID")&"") o prueba este:
response.redirect("filtrado2.asp?inmID=<%= request.querystring("inmID") %>")
Creo que el primero te servirá, ya que a mi me sirve muy bien.
Para Servirte...
Respuesta
1
NO, para eso es necesario un FORM y no podrás hacer lo que aquieres, el código que debes meter es:
<%
If Request.QueryString("inmID")="7" OR Request.QueryString("inmID")="6" OR Request.QueryString("inmID")="5" OR Request.QueryString("inmID")="4" Then
Response.Redirect("filtrado2.asp?oficion=" & Request.Form("txtoficina") &")
End If
%>
y e filtrado 2 poner
<input type="hidden" name="txtoficina" value="<%=Request.QueryString("oficina")%>">
Así incluirás los campos en la nueva página, por cierto esto es un ejemplo, ya que no se los campos de los input
Ya lo he solucionado, lo he puesto así:
Response.Redirect("filtrado2.asp?categoryID=" & Request.QueryString("categoryID")&"&locID=" & Request.QueryString("locID")&"&inmID=" & Request.QueryString("inmID"))
End If
%>
Respuesta
1
Con Request. QueryString la variable muere en la página, en este caso, filtrado.asp. Lo que tienes que hacer es agregar en el comando de salto la variable, esto es:
Response.Redirect("filtrado2.asp?inm=Request.QueryString("inmID").
Con esto estás llevando la variable a filtrado2.asp, allí la vuelves a tomar con
Request. QueryString("inmID").
Sugerencia: a los fines de la claridad del código y de minimizar el trabajo en el servidor, asigna el valor recibido a una variable:
set opcion = Request.QueryString("inmID") y luego usas la variable opcion solamente.
Hola julianra. He intentado lo que me dices, pero me da este error en la página filtrado.asp:
Error de compilación de Microsoft VBScript error '800a03ee'
Se esperaba ')'
/local/TMP1fpxm4jl21.asp, line 5
Response.Redirect("filtrado2.asp?inmID=Request.QueryString("inmID")
------------------------------------------------------------^
O sea, que no lo hace bien. ¿Se te ocurre el por que?
P.D.=¿Quien prefieres que gane, Boca o River? Un saludo
Probá también con:
Response.Redirect "filtrado2.asp?inmID=" + Request.QueryString('inmID')
Yo, en mi código ASP no uso () cuando asignas parámetros a una propiedad.
Espero que funcione.
Saludos
Julián
PD: RIVER toda la vida
Me da error igualmente. Ahora, lo tengo casi, pero me da un error. Lo he escrito así:
<%
If Request.QueryString("inmID")="7" OR Request.QueryString("inmID")="6" OR Request.QueryString("inmID")="5" OR Request.QueryString("inmID")="4" Then
Response.Redirect("filtrado2.asp?categoryID=" & Request.QueryString("categoryID")&"locID=" & Request.QueryString("locID")&"inmID=" & Request.QueryString("inmID"))
End If
%>
Lo unico que pasa, es que manda el vinculo así a la segunda página:
http://localhost/local/filtrado2.asp?categoryID=1locID=1inmID=7 y claro, deberia ser asi:
http://www.dominio.com/filtrado2.asp?categoryID=1&locID=1&inmID=7
Faltan las &. ¿Cómo lo pongo? He intentado mil combinaciones, pero no me sale
P.D. A mi también me guxta más River, más que nada porque ahora juega en el Real Madrid Esteban Cambiasso, que jugó en River, y porque Boca nos ganó en la Copa Intercontinental por culpa de los goles de Palermo
Te está faltando el & como parte de la cadena, si pasas más de una variable deben ir separadas por & (que no es el mismo que usas para concatenar las cadenas)
modo incorrecto: "a" & "b"
resultado -> ab
modo correcto: "a" & "&b"
resultado -> a&b
Respuesta
1
No te alarmes! Tenés solución. Interpreto que vos para saber la opción vos recibir por QueryString el valor, y según este haces un Response. Redirect a otra página. La solución es incorporar este valor como parámetro en el redirect a la otra página. Sería así:
Response.Redirect("elOtroAsp.asp?inmID=" & Request.QueryString("inmID")).
Por comodidad, sería bueno que pegues los parámetros en variables y trabajes con ellas. Es solo un detalle, pero resulta más rápido.
Arunchi, lo tengo casi, pero me da un error. Lo he escrito así:
<%
If Request.QueryString("inmID")="7" OR Request.QueryString("inmID")="6" OR Request.QueryString("inmID")="5" OR Request.QueryString("inmID")="4" Then
Response.Redirect("filtrado2.asp?categoryID=" & Request.QueryString("categoryID")&"locID=" & Request.QueryString("locID")&"inmID=" & Request.QueryString("inmID"))
End If
%>
Lo unico que pasa, es que manda el vinculo así a la segunda página:
http://localhost/local/filtrado2.asp?categoryID=1locID=1inmID=7 y claro, deberia ser asi:
http://www.dominio.com/filtrado2.asp?categoryID=1&locID=1&inmID=7
Faltan las &. ¿Cómo lo pongo? He intentado mil combinaciones, pero no me sale
Si tratás al "&" como un carácter no vas a tener problemas. Por ejemplo:
Response.Redirect("autos.asp?marca=" & Marca & "&Modelo=" & Modelo).
Ya lo he solucionado, lo puse así:
Response.Redirect("filtrado2.asp?categoryID=" & Request.QueryString("categoryID")&"&locID=" & Request.QueryString("locID")&"&inmID=" & Request.QueryString("inmID"))
Respuesta
1
Es algo bastante simple, lo único que tienes que hacer, es que cuando redireccionas la página, le vuelves a asignar por medio de la barra de direcciones, los valores, a las variables, con las que estas trabajando.
Por ejemplo el código quedaría algo así:
<%
If Request.QueryString("inmID")="7" OR Request.QueryString("inmID")="6" OR Request.QueryString("inmID")="5" OR Request.QueryString("inmID")="4" Then
'aca viene el cambio..
Response.Redirect("filtrado2.asp?inmID="& Request.QueryString("inmID"))
End If
%>
Otra forma de hacerlo, aunque no es lo mejor, por que ocupas más memoria, seria usar session de servidor, para guardar las variables entre una página y la otra
por ejemplo::
<%
If Request.QueryString("inmID")="7" OR Request.QueryString("inmID")="6" OR Request.QueryString("inmID")="5" OR Request.QueryString("inmID")="4" Then
session("inmID") = inmID
Response.Redirect("filtrado2.asp")
End If
%>
y en la otra pagina recuperas el valor, poniendo ::
<%
inmID = session("inmID")
%>
Espero que te allá servido, cualquier cosa me volvés a preguntar...
Ya lo he solucionado. Lo puse si:
Response.Redirect("filtrado2.asp?categoryID=" & Request.QueryString("categoryID")&"&locID=" & Request.QueryString("locID")&"&inmID=" & Request.QueryString("inmID"))
Respuesta
1
Si vos pasas un form a una página, entonces los valores se quedan en la página de respuesta, lo que podes hacer para pasar los valores del formulario completos es hacer una de estas cosas:
1) hacer en lugar del response.redirect "filtro2.asp", q haga "filtro2.asp?valor1=" & request("valor1") & "&valor2=" & request("valor2") & "&valor3=" & request("valor3")
entonces en filtro2.asp haces: valor1 = request. QUERYSTRING("valor1") etc etc, porque no mandas un form, sino los datos por querystring (mandas los datos por la barra de direcciones)
2) Transferir el form de filtro.asp a filtro2.asp haciendo esto:
Server. Transfer("filtro2.asp")
Respuesta
1
Para poder responderte has de decirme como pasas esos campos a la otra página. Si lo haces con un form o lo haces mediante parámetros. Dime como lo quieres pasar y te diré como hacerlo o que tienes mal. Hasta pronto
Respuesta
Podrías poner el código de la manera que envías los datos...
Debería ser algo así :
<form action ="TUpagina" method ="post">
'tus 3 campos
Input
Input
Input
</form>
Respuesta
-1
No. Los tienes que volver a pasar en la URL del salto.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas