Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mara.GAD

Passar variáveis através de SESSION para página aberta em DIV

Recommended Posts

Oi pessoal.. isso é possível? Passar variável para uma pagina aberta em div?

Seguinte, tô tentando isso há três dias sem sucesso:

 

1º através de form só que sem botão submit, botão normal mesmo, não deu

2º aí achei que era isso e coloquei o botão submit... aí "fazia que abria na div (abria rapidamente) e logo dava refresh estranho na pagina e voltava para página inicial (index mesmo, nem a pagina que eu tava)

3º agora tõ tentando um mix de form com session da seguinte maneira:

 

- Tenho form que pega dados ( id_categoria / id_produto / detalhes_produto / garantia_produto )

PS: Fiz assim pq não tava conseguindo usar sessão direto, não sei pq.. com o form deu certo...

Mas esse form, nem tem submit, serve só para minha session mesmo

 

- Aí tenho as sessões na página do produto(visualizacao_produtos.asp)

 

- Tenho uma DIV (id=abrirPaginaDetalhes) onde primeiramente aparece a descrição do produto, que vem do BD, de acordo com id-categoria, id_produto

 

- Ou seja, o valor inicial da DIV é <%=rs("detalhe")%> (vinda do campo "detalhe" da tabela "produtos" do bd MySQL

 

- Aqui começam os problemas... Nessa mesma DIV abro abro as seguintes páginas: "Formas de Pagamento" e "Procedimentos de Compra em outros países" até aí OK

 

- Só que as páginas que têm variaveis ( "detalhes do produto" (criei essa pagina para poder retornar aos Detalhes, valor inicial da DIV e "garantia"... que preciso dos valores das variáveis, essas não tão rolando nem com reza.

 

Na pagina que chama as outras numa DIV, coloquei as sessões:

<%

session("sconteudodetalhes") = "request.form.vardetalhes.value"

session("sconteudogarantia") = "request.form.vargarantia.value"

session("sidsessao") = "request.form.idsessao.value"

session("sidproduto") = "request.form.idproduto.value"

%>

 

 

Aí nas duas paginas que preciso dessas variáveis ("detalhes do produto" e "garantia":

 

<%

apanha_conteudodetalhes = session("sconteudodetalhes")

apanha_conteudogarantia = session("sconteudogarantia")

apanha_idsessao = session("sidsessao")

apanha_idproduto = session("sidproduto")

%>

 

 

Aí printei o conteúdo:

 

<% Response.Write("<% apanha_conteudodetalhes %>") %> ..em uma

 

<% Response.Write("<% apanha_conteudogarantia %>") %> ..e na outra

 

 

E o que consegui com isso? uma pagina aberta normalmente só que com o seguinte conteúdo:

 

apanha_conteudodetalhes

 

O que será que tá de errado?

 

A única coisa (que me veio à cabeça, lógico... pode ser que tenha outros modos que desconheço)que ainda não fiz foi nas páginas que recebem as variáveis conectar ao banco e colocar uma instruçao SQL para mostrar os detalhes em uma e a garantia na outra do PRODUTO EM QUESTÃO, de acordo com id_caegoria e id_produto.

 

Porém, tbm acho que seria em vão já que estou apanhando tanto nessa etapa de TRANSFERIR VARIÁVEIS, ou seja, puxar direto do banco de dados, tbm SÓ daria certo se eu conseguisse passar as variáveis necessárias à essas páginas.

 

Enfim, desculpem o texto longo, nem sei se deu pra entender, mas enfim... tô precisando de uma ajudinha nessa lógica aí... se não tá dando certo, ou tem algum errinho de síntase que não tô achando, ou realmente NÃO DÁ pra passar variáveis em paginas abertas em DIV... Se alguem puder me dar uma LUZZZZZZZZZZ !!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que salada O.O !

 

Ao selecionar um produto você quer que apareçam na mesma pagina outros detalhes certo ?

Tentou fazer isso com ajax ?

Tem um exemplo de uso de ajax com asp muito bom, o exemplo funciona para cidade e estado, mas está muito bem explicado e é facilmente adaptavel para outros casos.

 

Usando ajax, você não precisará usar sessions pois pode usar os atribuidos de formulário mesmo e recupera-los na pagina que fará o processamento dos dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que salada O.O !

 

Ao selecionar um produto você quer que apareçam na mesma pagina outros detalhes certo ?

Tentou fazer isso com ajax ?

Tem um exemplo de uso de ajax com asp muito bom, o exemplo funciona para cidade e estado, mas está muito bem explicado e é facilmente adaptavel para outros casos.

 

Usando ajax, você não precisará usar sessions pois pode usar os atribuidos de formulário mesmo e recupera-los na pagina que fará o processamento dos dados.

 

Oi Vinicius, brigada pela resposta. Bota "salada" nisso, e tá complicadinho de resolver viu.

Então, esse exemplo de estados/cidades rola tudo na mesma pagina né? e eu tô com problema pra passar as variáveis pra outras paginas.

 

Tô usando ajax pra função de "abrir as paginas em DIV". Segue:

 

<script type="text/javascript">

var xmlhttp = getXmlHttpRequest();

 

function getXmlHttpRequest()

{

if (window.XMLHttpRequest)

{

return new XMLHttpRequest();

}

else if (window.ActiveXObject)

{

try

{

return new ActiveXObject("Msxml2.XMLHTTP");

}

catch (e)

{

try

{

return new ActiveXObject("Microsoft.XMLHTTP");

}

catch (e){}

}

}

}

 

function requisicao(_strNomePagina)

{

xmlhttp.open("GET", _strNomePagina, true);

xmlhttp.setRequestHeader("Content-Type", "text/html; charset=iso-8859-1");

xmlhttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");

xmlhttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");

xmlhttp.setRequestHeader("Pragma", "no-cache");

xmlhttp.onreadystatechange = function()

{

if (xmlhttp.readyState==4)

{

document.getElementById('divPaginaDetalhes').innerHTML = xmlhttp.responseText;

}

}

xmlhttp.send(null);

}

</script>

 

As duas paginas que NÃO PRECISAM DE VARIÁVEIS, abrem ok. Só não sei pq as outras duas (detalhes e garantia) NÃO CONSIGO PASSAR ESSAS BENDITAS VARIÁVEIS. Vou postar umas imagens na esperança de elucidar um pouco mais:

 

Imagem Postada

Figura 1 OK >> mostra a DIV com o VALOR INICIAL que é:

<div align="left" id="divPaginaDetalhes"><span class="style17">

<%=rs("detalhe")%></span>

</div>

 

Imagem Postada

Figura 2 OK >> Mostra as páginas (que não necessitam de variáveis) "formadepagamento.asp" e "garantia.asp"

 

Imagem Postada

Figura 3 AQUI ESTÁ O PROBLEMA >> Nas paginas "detalhesdoproduto" e "garantia" cujos valores são provenientes dos respectivos campos da tabela do BD MYSQL.

 

Nem sei se as páginas NÃO ESTÃO RECEBENDO AS VARIÁVEIS VIA SESSÃO, ou se é somente o erro de síntase, pois tem um erro como mostra a figura 3 e está aqui:

<% Response.Write("<% apanha_conteudodetalhes %>") %>

 

Onde "apanha_conteudodetalhes" é a variável proveniente da sessão que mostrei no post anterior

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa linha está errada

ao inves de :

<% Response.Write("<% apanha_conteudodetalhes %>") %>

 

tenta assim:

<% Response.Write apanha_conteudodetalhes %>

 

Valeuuu Vinicius. Parou de dar o erro. A página voltou a ser aberta. MAS NÃO LEU A VARIÁVEL.

Nossa que dificuldade pra mim, passar variáveis sem formulário.

 

Me responde uma coisinha: você conhece um jeito de abrir form na DIV?

Pergunto isso pq foi a ÚNICA maneira que consegui transferir essas variáveis pras outras paginas, usando form, MAS NÃO QUANDO ABERTAS NA DIV. Só se abertas em outra pagina normal (não é o que quero, lógico, fiz isso só pra testar)

 

Em DIV não dá pra usar o TARGET né? como se fosse Iframe... Se tiver um jeito de abrir um form na DIV, uso radios no lugar dos links e submeto as variáveis às paginas requeridas.

Desse jeito, já fiz e deu certo MAS NÃO ABRINDO NA DIV. Não sei como tô presa há dias num probleminha tão bobo, isso é tão comum de se ver em lojas virtuais (as paginas abrindo na DIV) e certamente usam variáveis, pois os ids do produto e categoria são fundamentais... mas pra mim isso tá virando gravidez de elefante, afff

Compartilhar este post


Link para o post
Compartilhar em outros sites

No que usei aqui, fiz algo parecido, fora da div fiz assim:

<form ... >

<input type ...>

<input type ...>

<div> <= aqui é a chamada da div pro ajax

 

Na pagina carregada pelo ajax, os inputs continuam normalmente.

 

continuando na pagina que criei o form, depois fecho a div e coloco mais alguns inputs e o submit.

 

A pagina que recebe as informações do form processa normalmente e os inputs que estão na div são processados normalmente, pois ao renderizar a pagina no navegador, tudo passa a ser só uma página e as informações que serão enviadas para a proxima pagina também.

 

De qualquer modo, é bom dar um response.write na variavel para ver se ela recebe os dados, caso não esteja recebendo, precisa revisar o request.form para ver se o nome da variavel está correto e na pagina do input também.

Repare também se o input não está depois de um /form pois nesse caso a informação não é enviada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

No que usei aqui, fiz algo parecido, fora da div fiz assim:

<form ... >

<input type ...>

<input type ...>

<div> <= aqui é a chamada da div pro ajax

 

Na pagina carregada pelo ajax, os inputs continuam normalmente.

 

continuando na pagina que criei o form, depois fecho a div e coloco mais alguns inputs e o submit.

 

A pagina que recebe as informações do form processa normalmente e os inputs que estão na div são processados normalmente, pois ao renderizar a pagina no navegador, tudo passa a ser só uma página e as informações que serão enviadas para a proxima pagina também.

 

De qualquer modo, é bom dar um response.write na variavel para ver se ela recebe os dados, caso não esteja recebendo, precisa revisar o request.form para ver se o nome da variavel está correto e na pagina do input também.

Repare também se o input não está depois de um /form pois nesse caso a informação não é enviada.

 

Então, tentei de novo com form e não deu (não abrindo o form na DIV)

Mas depois de tanto tempo, eu descobri o erro Vinicius, é erro de síntase mesmo, será que você pode me ajudar?

 

Eu tô conseguindo sim, passar as variáveis, o problema tá NO VALOR DA VARIÁVEL

 

Primeiro tentei assim:

session("sconteudodetalhes") = "<%=rs("detalhe")%>"

Depois usando form, assim:

session("sconteudodetalhes")= "request.form.vardetalhes.value"

E depois com algumas modificações, assim de novo:

session("sconteudodetalhes") = "<%=rs("detalhe")%>"

 

 

E só agora consegui ver que o erro está aí no valor da sessão. Seu eu fizer por exemplo:

session("sconteudodetalhes") = "UM TEXTO QUALQUER"

 

A variável é passada normalmente. Sabe me falar qual o erro de síntase?

Os benditos valores que preciso são: <%=rs("detalhe")%> e <%=rs("garantia")%>

E não sei pq não tô conseguindo passá-los como variável.

Grata mais uma vez...

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloca assim

 

session("sconteudodetalhes") = rs("detalhe")

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloca assim

 

session("sconteudodetalhes") = rs("detalhe")

Valeu Xanburzum... não deu mais erro mesmo, bom pra eu saber a síntese certa quando precisar novamente.

Mas de qualquer forma, a variável não foi passada mesmo gente, não consigo entender pq... talvez pq depende de outras variáveis como alguns ids (produto, sessão, categoria e talz) se alguém tiver alguma idéia do porquê só pra eu ficar sabendo mesmo, pq acabei resolvendo de uma outra maneira. A quem interessar, segue como eu fiz:

 

 

Na página de Demonstração dos Produtos onde chamo os ítens (detalhes, garantia, pagamento e other countries), coloquei as DIVS com seus respecitivos estilos iniciais, none ou block:

 

<div align="left" id="divPaginaDetalhes" style="display: block;"><span class="style17">
<%=rs("detalhe")%></span></div>


<div align="left" id="garantiadiv" style="display: none;"><span class="style17">
<%=rs("garantia")%></span></div>

<div align="left" id="pagamentodiv" style="display: none;"><span class="style17">
<!--#include file="pagamento2.asp"--></span></div>

<div align="left" id="othercountriesdiv" style="display: none;"><span class="style17">
<!--#include file="othercountries.asp"--></span></div>

Aí nos links pra chamar as páginas ou Divs que quero:

 

<span onClick="DivPrincipal();" style="cursor: pointer; text-decoration:underline"><u>Detalhes do Produto</u></span> 
<span onClick="DivGarantia();" style="cursor: pointer; text-decoration:underline"><u>Garantia</u></span> 
<span onClick="DivPagamento();" style="cursor: pointer; text-decoration:underline"><u>Formas de Pagamento</u></span>
<span onClick="DivOther();" style="cursor: pointer; text-decoration:underline"><u>Buy Other Countries</u></span>

E a função: <script language="javascript" src="funcao_divs.js"></script>

// atribuir DIV's que serao mostradas ou ocultas
  
var divM1 = "divPaginaDetalhes";
var divM2 = "garantiadiv";
var divM3 = "pagamentodiv";
var divM4 = "othercountriesdiv";


 
 
 function DivPrincipal(){  // função aparecer e ocultar divs 
     document.getElementById(divM1).style.display = "block";
     document.getElementById(divM2).style.display = "none";   
     document.getElementById(divM3).style.display = "none";
     document.getElementById(divM4).style.display = "none";   
    // Aparecer garantiadiv, ocultar divPaginaDetalhes  
  
     
}

 
function DivGarantia(){  // função aparecer e ocultar divs 
     document.getElementById(divM2).style.display = "block";
     document.getElementById(divM1).style.display = "none";
     document.getElementById(divM3).style.display = "none";   
     document.getElementById(divM4).style.display = "none";
    // Aparecer garantiadiv, ocultar divPaginaDetalhes  
  
     
}

function DivPagamento(){  // função aparecer e ocultar divs 
     document.getElementById(divM3).style.display = "block";
     document.getElementById(divM1).style.display = "none";
     document.getElementById(divM2).style.display = "none";   
     document.getElementById(divM4).style.display = "none";
    // Aparecer garantiadiv, ocultar divPaginaDetalhes  
  
     
}

function DivOther(){  // função aparecer e ocultar divs 
     document.getElementById(divM4).style.display = "block";
     document.getElementById(divM1).style.display = "none";
     document.getElementById(divM2).style.display = "none";   
     document.getElementById(divM3).style.display = "none";
    // Aparecer garantiadiv, ocultar divPaginaDetalhes  
  
     
}

Depois de uns 5 dias acho (rs) finalmente consegui!! Muitíssimo obrigada pela ajuda Vinicius e Xanburzum!!

Acabei não usando session que me deu muita dor de cabeça essa semana, rs mas: Post RESOLVIDO!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.