Ir para conteúdo

POWERED BY:

Arquivado

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

Claudio Neto

[Resolvido] Erro em OnClick

Recommended Posts

Bom dia.

 

Tenho uma função que está inserindo dados em um arquivo xml.

 

Antes desse função, é executado um loop no banco de dados que exibe algumas imagens na tela.

 

A intenção é, ao clicar nessa imagem, que os dados referentes a ela sejam inseridos no arquivo xml.

 

Mas não consigo entender por qual motivo, estão sendo inseridos no xml, os dados de todas as imagens.

 

Acredito que esteja usando o onclicl de forma incorreta e ele acaba chamando a função em todas as passagens do loop.

 

Segue código:

set rs_brindes = createobject("ADODB.RecordSet")

SQL = "select * From brindes"
rs_brindes.open SQL, conexao, 3, 3

if not rs_brindes.eof then%>
	<table name="lista_brindes" border="0" style="margin-left:10px" width="600px" cellspacing="2" cellpadding="2">
		<tr>
			<td colspan="3" align="center">
				Selecione seu brinde na lista abaixo:
			</td>
		</tr>
		<tr>
	<%do until rs_brindes.eof%>
			<td align="center">				
				<font class="estilo1"><a href="confirmacao.asp" onclick="<%call InsereBrinde_pedidoTemp(rs_brindes("codigo_brinde"), rs_brindes("nome"))%>"><input type="image" class="image" src="<%=rs_brindes("imagem")%>" /><br /><%=rs_brindes("nome")%></a><span><%=rs_brindes("descricao")%></span></font>
			</td>
	<%if rs_brindes.absoluteposition mod 3 = 0 then%>
		</tr>
		<tr>
	<%end if
	rs_brindes.movenext
	loop%>
		</tr>
	</table>
<%end if
'############################################################################
############################
'SUB InsereBrinde_pedidoTemp
' - Esta FUNCTION adiciona os brindes no pedido
'############################################################################
############################

Sub InsereBrinde_pedidoTemp(FctCodigoBrinde, FctNomeBrinde)

set docxml=CreateObject("microsoft.xmldom")
'Verifica se ja existe o arquivo XML da transação
existe_pedidoTemp = docxml.load(Application("DiretorioPedidos")&session("id_transacao")&".xml")
	
	'Se existir chama o arquivo
	If existe_pedidoTemp = True then
		set pedido = docxml.documentElement
		Set dados_pedido = pedido.SelectSingleNode("dados_pedido")
		set brinde = docxml.createelement("brinde")
		brinde.SetAttribute "codigo_brinde",FctCodigoBrinde
		brinde.SetAttribute "nome_brinde",FctNomeBrinde
		dados_pedido.appendchild(brinde)
		set brinde=Nothing
	End If

	docxml.save(Application("DiretorioPedidos")&session("id_transacao")&".xml")

End sub

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que achei, não é possível trabalhar uma chamada de sub no evento onclick né.

 

O que encontrei por ai foi conselhos para trabalhar com JavaScript. O problema é que se for fazer isso, não terei idéia de como manipular o xml.

 

Moderadores da área, por favor, transfira para JavaScript.

 

Agora em Juva, preciso saber se tem como eu chamar uma função em asp dentro do Java, tentei assim:

 

<script>
function InsereBrinde (FctCodigoBrinde, FctNomeBrinde){
	<%call InsereBrinde_pedidoTemp(%>+FctCodigoBrinde+<%,%>+FctNomeBrinde+<%)%>
}
</script>

Mas não deu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caramba, tudo que eu queria era impossível.

 

Descobri que passar um valor de JavaScript para ASP também não dá, devido ao ato de asp rodar no servidor e java no cliente.

 

Bom, para resolver meu problema, acabei fazendo a inserção do brinde na troca de página.

 

Também funcionou direitinho, estão está ótimo.

 

Obrigado aos que ao menos leram...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hehe...

 

Ta bem:

 

Na parte que exibe as imagens ficou assim: (lista_brinde.asp)

<%do until rs_brindes.eof%>
			<td align="center">
				<form name="enviaBrinde" action="confirmacao.asp" method="post">
					<input type="hidden" name="codBrinde" value="<%=rs_brindes("codigo_brinde")%>" />
					<input type="hidden" name="nomeBrinde" value="<%=rs_brindes("nome")%>" />
					<font class="estilo1"><input type="image" class="image" src="<%=rs_brindes("imagem")%>" onclick="document.enviaBrinde.submit();" /><br /><%=rs_brindes("nome")%><span><%=rs_brindes("descricao")%></span></font>
				</form>
			</td>
	<%if rs_brindes.absoluteposition mod 3 = 0 then%>
		</tr>
		<tr>
	<%end if
	rs_brindes.movenext
	loop%>

E a página que está sendo chamada ficou assim:(confirmacao.asp)

if request("codBrinde") <> "" and request("nomeBrinde") <> "" then
				set docxml=CreateObject("microsoft.xmldom")
				'Verifica se ja existe o arquivo XML da transação
				existe_pedidoTemp = docxml.load(Application("DiretorioPedidos")&session("id_transacao")&".xml")
					
				'Se existir chama o arquivo
				If existe_pedidoTemp = True then
					set pedido = docxml.documentElement
					Set dados_pedido = pedido.SelectSingleNode("dados_pedido")
					set brinde = docxml.createelement("brinde")
					brinde.SetAttribute "codigo_brinde",request("codBrinde")
					brinde.SetAttribute "nome_brinde",request("nomeBrinde")
					dados_pedido.appendchild(brinde)
					set brinde=Nothing
				End If

				docxml.save(Application("DiretorioPedidos")&session("id_transacao")&".xml")
			end if

Detalhe que lista_brinde.asp é um include de confirmacao.asp. E a lista_brinde só será exibida se o cliente ainda não tiver selecionado um brinde.

Então para que, quando a página confirmacao.asp for chamada pela segunda vez, não exibir de novo a lista de brindes, fiz:

 

valor = pegaValorAtrib(Application("DiretorioPedidos")&session("id_transacao")&".xml","dados_pedido","valor_subtotal")
			if FormatNumber(valor) > 40 then
				Call abre_xmlpedido(session("id_transacao"), objXML, objRoot)
				Set dado_brindes = objRoot.SelectSingleNode("dados_pedido[@id_transacao="&session("id_transacao")&"]/brinde")
				If dado_brindes Is Nothing Then%>
					<!--#include file="lista_brindes.asp"-->
				<%end if
			end if

Deu para entender? Achei que ficou a maior confusão ai...

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.