Update com AJAX
25/03/2011
0
Tenho uma jsp chamada "consulta" que faz uma consulta no bd e preenche uma tabela. Nesta tabela na frente de cada registro tem um botão que deve ser utilizado para mudar o status de um campo do bd (Quero fazer esse processo de alteração de status (SIM/NÃO) com ajax.).
Desta forma criei a função javaScript, que chama outra jsp chamada ajaxConfere, essa pagina está funcionando corretamente, ela somente recebe um ID e faz o update no id selecionado. Até ai tranquilo.
Porem, quando clico no botão (evento onClick) ele não está chamando a função do Ajax. Segue abaixo o código da pagina consulta para melhor entendimento:
Função java Script:
<code>
<script type="text/javascript"> function Confere(id){ if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function(){ if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("myDiv").innerHTML=xmlhttp.responseText; } } alert(id); xmlhttp.open("GET","ajaxConfere.jsp?id="+id+"",true); xmlhttp.send(); } </script> </code>
Tabela com o botão que chama a função Confere:
<code>
while (rs.next()){ SimpleDateFormat sdf= new SimpleDateFormat("dd/MM/yyyy"); Date agora = rs.getDate ( "data"); NumberFormat nf = NumberFormat.getCurrencyInstance(); String valorFormatado = nf.format(rs.getDouble("saldo")); out.println("<tr>"); out.println("<td bgcolor='#D9D9F3'><center>" + rs.getString("num_conta") + "</center></td>"); out.println("<td bgcolor='#D9D9F3'>" + rs.getString("desc_conta") + "</td>"); out.println("<td bgcolor='#D9D9F3'><center>" + rs.getString("desc_pac") + "</center></td>"); out.println("<td bgcolor='#D9D9F3'>" + rs.getString("desc_usuario") + "</td>"); out.println("<td bgcolor='#D9D9F3'>" + (valorFormatado) + "</td>"); out.println("<td bgcolor='#D9D9F3'><center>"+sdf.format(agora)+"</center></td>"); out.println("<td bgcolor='#D9D9F3'>" + rs.getString("conferido") + "</td>"); out.println("<td > <button type=button onclick=Confere("+rs.getString("id")+")> OK </button> </td>"); out.println("</tr>"); } </code>
Na ultima linha tem o botão que chama a função, ai que está o problema! Ele não funciona dentro da tabela. Se por acaso eu tiro esse botão do loop (ai vai mostrar só um botão) e coloco fora passando um Id padrão funciona perfeitamente, no caso fica desta forma:
<code>
out.println("<td > <button type=button onclick=Confere(2)> OK </button> </td>"); </code>
Chamo a função passando um código padrão pra testar, ai funciona.
O problema é que preciso disso na tabela, cada botao tem que ter o ID do registro selecionado. Percebi que nem chama a função, pq coloquei uma alerta dentro dela e não aparece.
Alguem tem uma LUZ???
Abraços...Desde já agradeço....
Max Costa
Posts
25/03/2011
Dyego Carmo
coloque no evento onclick para
javascript:cofere....
Habilite o Firebug de seu firefox e veja se seu script nao esta com erro !
28/03/2011
Max Costa
Na verdade eu estava testando no IE, ai passei a usar o FireFox agora.
Com isso, antes daquela tela, tenho outro botão de consulta, também AJAX. Então acho melhor resolver esse problema primeiro. abaixo o código do botão consultar:
out.println("<button type=button javascript:onclick=consultaSaldos(dataInicial.value,dataFinal.value,id_pac.value)>Consultar</button>");
Abaixo a função que o botão está chamando:
<head> <script type="text/javascript"> function consultaSaldos(dataInicial, dataFinal, idPac){ if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function(){ if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("myDiv").innerHTML=xmlhttp.responseText; } } //alert(dataInicial); //alert(dataFinal); //alert(idPac); xmlhttp.open("GET","ajaxConsulta.jsp?dataInicial="+dataInicial+"&dataFinal="+dataFinal+"&idPac="+idPac+"",true); xmlhttp.send(); } </script> </head>
No ie funciona, mas no fire fox quando clico em consultar não acontece nada.
Agradeço novamente pela ajuda.
28/03/2011
Max Costa
"dataInicial is not Defined"
Estou pegando esse valor nesse input:
out.println("Data inicial:"); out.println("<input type=text name=dataInicial>"); out.println("Data Final:"); out.println("<input type=text name=dataFinal>");
Existe outra forma de recuperar o valor do input para passar como parametro para função?
29/03/2011
Max Costa
Agora voltando para o primeiro problema, no qual tenho que chamar a função javascript por meio do botão adcionado a cada registro da tabela. O Firebug diz que não é possível encontrar a função Confere() "Confereis not defined".
Neste caso, todo esse código está na pagina "confere.jsp", primeiro tenho a função java script, depois tenho o código que carrega a tabela com os dados do bd e adciona o botão. Não entendi porque não acha a função...
<script type="text/javascript"> function Confere(id){ if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function(){ if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("myDiv").innerHTML=xmlhttp.responseText; } } alert(id); xmlhttp.open("GET","ajaxConfere.jsp?id="+id+"",true); xmlhttp.send(); } </script>
para chama-la:
out.println("<td > <button type=button onclick=javascript:Confere("+rs.getString("id")+") > OK </button> </td>");
Erro: "Confereis not defined".
04/04/2011
Robson Teixeira
qualquer coisa é so chamar
att
robson Passarella
Clique aqui para fazer login e interagir na Comunidade :)