Ir para conteúdo

POWERED BY:

Arquivado

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

Lucia_na

funcao sem refresh na pagina

Recommended Posts

boa tarde a todos..o seguinte precisava de uma funcao que pegasse um valor de uma combo selecionada sem dar um refresh na pagina..Procurei na net e encontrei algo nesse sentido que precisava e adaptei ao meu sistema. E funcionouA minha duvida é o seguinte depois que adaptei esse codigo a minha pagina ela ficou muito lenta para abrir, tipo leva em torno de 2 min pra abrir uma simples pagina. Nao sei pq demora tanto, mas percebi que foi depois que implementei esse codigo..por favor, alguem sabe me dizer pq, ou alguem tem uma solucao melhor pro caso que eu preciso.1. sub FU_AtualizaDadosChegada (cod_cidade)2. Response.Write "<script language=""JavaScript"">" & vb script:AtualizaAeroportoChegada(this.form);"> <%call FU_AtualizaDadosChegada(cod_cidade)%> <option value="">Selecione</option> <option value="Airport">Airport</option> <option value="Train Station">Train Station</option> <option value="Pier">Pier</option> <option value="Bus Station">Bus Station</option> <option value="Terminal">Terminal</option> <option value="Hotel">Hotel</option></select>e a outra combo:<select name="sel_aeroportoChegada" style="border: 1 solid #000000; font-size: 8pt;"></select>

Compartilhar este post


Link para o post
Compartilhar em outros sites

continuacao do codigo

sub FU_AtualizaDadosChegada (cod_cidade)	Response.Write "<script language=""JavaScript"">" & vbcrlf 	Response.Write "function AtualizaAeroportoChegada (form) {" & vbcrlf	Response.Write "switch (form.PartidasChegada.options[form.PartidasChegada.selectedIndex].value) {" & vbcrlf 	SqlPartidas = "SELECT * FROM TRANSLADOS ORDER BY partida" 	Set rsPartidas = Conexao.Execute (SqlPartidas)	While NOT rsPartidas.EOF	partida = rsPartidas("Partida")	mSQL =		"set dateformat dmy select "	mSQL = mSQL & "  ID_TRASLADO "								mSQL = mSQL & "FROM CIDADES " 	mSQL = mSQL & "WHERE COD_CIDADE = " & cod_cidade 														Set QueryID = Conexao.Execute(mSQL)	ID_TRASLADO = QueryID("ID_TRASLADO")	Response.Write "case '" & rsPartidas("partida") & "':" & vbcrlf	Response.Write "form.sel_aeroportoChegada.length=0;" & vbcrlf 	mSQL =		" set dateformat dmy select * "				mSQL = mSQL & " FROM TRANSLADOS "	mSQL = mSQL & " WHERE COD_CIDADE = " & cod_cidade & " and INOUT = 'I' "	mSQL = mSQL & " and partida = '"& partida &"'"	if ID_TRASLADO = "C" then	mSQL = mSQL & " and TRANSLADOS.OFICIAL = '1' "	end if	mSQL = mSQL & " ORDER BY DESCRICAO "	Set rsTranslado = Conexao.Execute (mSQL) 	i = 0 	While NOT rsTranslado.EoF	Response.Write "form.sel_aeroportoChegada.options[" & i & "] = new Option('" & rsTranslado("DESCRICAO") & "','" & rsTranslado("COD_TRANSLADO") & "');" & vbcrlf 	i=i+1	rsTranslado.MoveNext	Wend 	Response.Write "break;" & vbcrlf	rsPartidas.MoveNext 	Wend 	Response.Write "}}" & vbcrlf & "</script>" & vbcrlf

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu banco de dados deve possuir muitos dados cadastrados. Quando carrega a página, todos os dados são armazenados no código, o que deve está deixando ele gigante e a página pesada.

 

Procura sobre Ajax, através dele você não precisa carregar os dados dessa forma, tornando a página bem mais leve. Aqui no fórum mesmo deve existir vários códigos de exemplo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

LucianaEsse solução que você encontrou só é legal quando a relação entre a quantidade de possibilidades na combo "pai" e a quantidade de possibilidades na combo "filha" é pequena. Isso pq esse script monta um JavaScript com todo o conteúdo do banco de dados na sua página (você pode perceber isso visualizando o código-fonte da mesma depois de carregada), e controla as exibições de acordo com o que for selecionado na combo "pai".Acredito que essa demora ocorra por causa disso.. essa combinação de registros de ve ser muito grande, o que torna inviável essa solução.Não olhei com calma pra ver se pode ser algum erro no script, mas se não houver erro e realmente a combinação de possíveis resultados for muito grande, o ideal é você utilizar Ajax pra carregar esse combo "filho".AbraçoCassiano.

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.