Ir para conteúdo

POWERED BY:

Arquivado

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

leandro_clp

ASP + AJAX - retorno de parametros...

Recommended Posts

Boa tarde pessoal.

 

Estou desenvolvendo um sistema com ASP e AJAX para baixa de parcelas ref a vendas...criei o script que lista as parcelas e seus vencimentos.

 

Ao clicar sobre o valor da parcela é chamada uma função, vem o AJAX que redireciona p/ um SQL de UPDATE no arquivo executa.asp e baixada:

 

Response.Write("<td width=5% align=center height=19 bgcolor=#CCFFCC>")

Response.Write("<font face=Verdana size=2>")

Response.Write("<a href=javascript:BaixaParc('p1',"& rsTabela("cod_int") &")> "& FormatNumber(rsCartoes("parc1"),2) &" </a> ")

Response.Write("</font></td>")

 

Response.Write("<td width=2% align=center height=19 bgcolor=#CCFFCC>")

Response.Write("<font face=Verdana size=2>")

Response.Write("<div id=acao_executada style=width: 16; height: 16>")

Response.Write("</div>")

Response.Write("</font></td>")

 

/*'Exemplo do uso do Ajax*/

 

var xmlHttp

 

function BaixaParc(parc,cod_int)

{

xmlHttp=GetXmlHttpObject()

if (xmlHttp==null)

{

alert ("Este browser não suporta HTTP Request")

return

}

 

var url="executa.asp" // o arquivo que irá executar a SQL

url1="?parc="+parc

url2="&cod_int="+cod_int

url = url+url1+url2

xmlHttp.onreadystatechange=stateChanged

xmlHttp.open("GET",url,true)

xmlHttp.send(null)

}

 

/* Essa função irá exibir o resultado na DIV */

function stateChanged()

{

if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")

{

document.getElementById("acao_executada").innerHTML="<img src='imagens/parc_pago_desfaz.gif'>"

}

}

 

/* Instancia */

function GetXmlHttpObject()

{

var objXMLHttp=null

 

if (window.XMLHttpRequest)

{

objXMLHttp=new XMLHttpRequest()

}

else if (window.ActiveXObject)

{

objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")

}

return objXMLHttp

}

 

Até aí tranquilo...o detalhe é que existe uma imagem ao lado da parcela (imagens/parc_pago_desfaz.gif) que tento mostrar na linha onde ocorreu a atualização...porem a mesma aparece na DIV da primeira linha da tabela e não na linha onde atualizei...não estou conseguindo retornar parametros que informem ao script onde atualizar essa imagem...

 

Não sei se fui bem claro, mas se alguem tiver alguma luz...

Abs!

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este exemplo, em uma página onde tenha um botão, por exemplo. Nesse botão, você chamará uma função chamada enviaPage(), para enviar os dados via GET, mas vocês podem usar qualquer outro tipo de função que acharem melhor. É que, no caso, eu utilizo funções diferentes para enviar dados via GET e via POST.

 

<input type="button" name="excluir" value="Excluir id 21" onclick="enviaPage('excluir.asp', 'GET', 'true', 'conteudo','action=excluir&id=21')">

 

A função que citei, enviaPage(), concatenará os parâmetros com a url e colocará um Math.random(), que evita que fique no cachê.

<script>
function enviaPage(url, metodo, modo, tagId, parametros)
{
   goAjax( url+"?"+parametros+"&rnd"+ Math.random() , metodo, modo , tagId);
}
</script>

Agora, vem toda a função Ajax, que será responsável por tudo.

function goAjax(url, metodo, modo, tagRetorno, parametros) {
       document.getElementById(tagRetorno).innerHTML='<div align="center" class="carregando"><img src="../images/carregando.gif"><br /><br />carregando...</div>'

           if(metodo == "GET") {
               xmlhttp.open("GET", url, modo);
           } else {        
               xmlhttp.open("POST", url, modo);
               xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; 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) {
                   retorno=xmlhttp.responseText
                   document.getElementById(tagRetorno).innerHTML=retorno
                   findScript(retorno)
               }
           }
           if(metodo == "GET") {
               xmlhttp.send(null);
           } else {        
               xmlhttp.send(parametros);
           }
}

 

Vamos desenvolver a página asp, que realizará a exclusão dos registros, por exemplo. Veja que essa página é aquela que informa no botão, quando passo os parâmetros, enviando o retorno para a div que especifiquei no botão, que é o conteúdo.

 

<%
action = request("action")
id = request("id")

if action = 'excluir' then
    'exclui id tal
ok = true
end if
response.write "<script>enviaPage('OK.asp', 'GET', 'true', 'mensagem','ok="& OK &" ');<script>"
%>

 

Percebam que o exemplo que passei é bem simples mesmo, como eu já tinha dito. E a partir disso, dá para vocês começarem a desfrutar e inventar mais coisa de ASP com AJAX. É uma forma de desenvolver sem recarregar determina página, e consome menos do servidor. Será muito utilizado futuramente. No próximo artigo, vou mostrar mais sobre como usar ASP com AJAX e sua utilização.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode usar o exemplo acima como referencia

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso deve-se ao facto de você certamente ter várias divs com o mesmo id="acao_executada "

 

 

ao tentar encontrar a div, ele depara-se com várias com o mesmo id, e atribui a imagem à primeira div que encontrou.

 

soluções:

 

ou usa divs com ids diferentes ou então através de jquery usa os find().next() etc

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este link

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.