ayer funciona, y de golpe... no-> paso de parametros con Session (OjO Marcos)

22/01/2005 - 16:11 por Jordi Maycas | Informe spam
Hola, tengo esta pagina con marcos. El problema radica en la llamada a
File.asp con el parametro Session("valor"), debido a que una vez estoy en la
pagina File.asp, si hago un response.write(Session("valor")), lo muestra
como vacio. Se que no es recomendable usar marcos y de hecho lo iba a
descartar, pero ayer, funcionaba.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento sin t&iacute;tulo</title>
</head>
<% Dim ID
ID = Request("ID")
Session("valor")=Request("ID")
'Response.Write("valor=" & Session("valor"))
%>
<frameset rows="*" cols="366,613">
<frame src="File.asp?ID=" & Session("valor")>
<frameset rows="96,299" cols="*">
<frame src="prueba5.asp">
<frame src="perfil.asp?ID=" & Session("valor")>
</frameset>
</frameset>
<noframes><body>
</body></noframes>
</html>


FILE. ASP


<%
' -- file.asp --
' Retrieves binary files from the database

Response.Buffer = True
Dim connStr,prueba
prueba=Session("valor") 'AQUI PRUEBA NO TIENE NINGUN VALOR.. I DEBERIA
TENERLO.
if len(prueba)<1 Then
prueba=7
End if
connStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
Server.MapPath("\..\XXXXX\XXXXX.mdb")
Dim rs
Set rs = Server.CreateObject("ADODB.Recordset")
dim cadena
cadena="select [Data Fichero],[Contenido] from Files where ID=" & prueba
'PRUEBA NO TIENE VALOR...NO VA
'Response.Write(cadena)

rs.Open cadena, connStr, 2, 4

If Not rs.EOF Then
Response.ContentType = rs("Contenido")
Response.BinaryWrite rs("Data Fichero")
End If


rs.Close
Set rs = Nothing
%>
 

Leer las respuestas

#1 Miguel Gonzalez
23/01/2005 - 14:13 | Informe spam
Hola Jordi.

No acabo de entender el problema...

No obstante, unas apreciaciones:

a) No pasas el valor de ID en el "querystring" (te falta "encerrar" el código ASP y poner
correctamente las comillas del "src" de los marcos). Tendrías que hacerlo así:

<frame src="File.asp?ID=<%=Session("valor")%>">
<frame src="perfil.asp?ID=<%=Session("valor")%>">

b) Si estás pasando el valor en el "querystring", ¿para qué lo almacenas en sesión (o al revés, si
lo almacenas en sesión, para qué lo pasas en el "querystring")?

c) Las páginas de los marcos se ejecutan separadamente, puede darse el caso que cuando llames al
objeto "session" en alguna de las páginas todavía no esté disponible la variable para todas las páginas.

d) Si tienes el "buffer" activado ("Response.Buffer=True"), tendrás que forzar su envío al cliente.
Es posible que sí se esté cargando la variable, pero hasta que no hagas un "Response.Flush" no lo
podrás comprobar en el navegador.

Saludos!
Miguel

Jordi Maycas wrote:
Hola, tengo esta pagina con marcos. El problema radica en la llamada a
File.asp con el parametro Session("valor"), debido a que una vez estoy en la
pagina File.asp, si hago un response.write(Session("valor")), lo muestra
como vacio. Se que no es recomendable usar marcos y de hecho lo iba a
descartar, pero ayer, funcionaba.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento sin t&iacute;tulo</title>
</head>
<% Dim ID
ID = Request("ID")
Session("valor")=Request("ID")
'Response.Write("valor=" & Session("valor"))
%>
<frameset rows="*" cols="366,613">
<frame src="File.asp?ID=" & Session("valor")>
<frameset rows="96,299" cols="*">
<frame src="prueba5.asp">
<frame src="perfil.asp?ID=" & Session("valor")>
</frameset>
</frameset>
<noframes><body>
</body></noframes>
</html>


FILE. ASP


<%
' -- file.asp --
' Retrieves binary files from the database

Response.Buffer = True
Dim connStr,prueba
prueba=Session("valor") 'AQUI PRUEBA NO TIENE NINGUN VALOR.. I DEBERIA
TENERLO.
if len(prueba)<1 Then
prueba=7
End if
connStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
Server.MapPath("\..\XXXXX\XXXXX.mdb")
Dim rs
Set rs = Server.CreateObject("ADODB.Recordset")
dim cadena
cadena="select [Data Fichero],[Contenido] from Files where ID=" & prueba
'PRUEBA NO TIENE VALOR...NO VA
'Response.Write(cadena)

rs.Open cadena, connStr, 2, 4

If Not rs.EOF Then
Response.ContentType = rs("Contenido")
Response.BinaryWrite rs("Data Fichero")
End If


rs.Close
Set rs = Nothing
%>


Preguntas similares