Devolvendo informações com AJAX

4 respostas
airmigjr

Pessoal,
encontrei um exemplo de utilização de AJAX com JSP na net, e achei super legal. Porém pairou uma dúvida.
Pelo que eu entendi, o formulário está enviando as informações para a gravação dos dados, e após gravados, é retornada a informação de que os dados foram inseridos com sucesso. Porém, e se no caso, eu quisesse que fossem retornados outros dados, como por exemplo àqueles mesmos dados que eu acabei de gravar. Sem a necessidade de se fazer uma consulta novamente, simplesmente retornar os dados para que a página seja atualizada? Isso é fácil ou o AJAX só retorna uma única informação? O exemplo do retorno foi feito com um out.println(), mas e se no caso fossem vários os atributos que eu gostaria que retornassem para serem exibidos?

Me desculpem se não me expressei bem. Vai o código:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Teste</title>
<script>
function verificacampos()
{

var nome = document.getElementById("nome").value;
var senha = document.getElementById("senha").value;
var login = document.getElementById("login").value;
if (senha == "" || login == "" || nome == "")
{ 
    alert('É necessário digitar os campos Nome, Login e Senha corretamente');
    return false;
}
else
{ 
        salvar();

}

}
//esta é a função Ajax. Sem ela, nada acontece.
function openAjax() {

var ajax;

try{
    ajax = new XMLHttpRequest(); // XMLHttpRequest para Firefox, Safari, dentre outros.
}catch(ee){
    try{
        ajax = new ActiveXObject("Msxml2.XMLHTTP"); // Para o Internet Explorer
    }catch(e){
        try{
            ajax = new ActiveXObject("Microsoft.XMLHTTP"); // Para o Internet Explorer
        }catch(E){
            ajax = false;
        }
    }
}
return ajax;
}


function salvar()
{
        var nome = document.getElementById('nome').value; //Note que as variáveis são resgatadas pela função getElementById. 
        var endereco = document.getElementById('endereco').value;
        var cidade = document.getElementById('cidade').value;
        var telefone = document.getElementById('telefone').value;
        var login = document.getElementById('login').value;
        var senha = document.getElementById('senha').value;
        
        var exibeResultado = document.getElementById('exibeResultado');

            var ajax = openAjax(); // Inicia o Ajax.
            ajax.open("POST", "grava_usuario.jsp?nome=" + nome +"&endereco=" + endereco + "&cidade=" + cidade + "&telefone=" + telefone +"&login=" + login + "&senha="+ senha, true); // Envia o termo da busca como uma querystring, nos possibilitando o filtro na busca.
            ajax.onreadystatechange = function()
            {
                if(ajax.readyState == 1) // Quando estiver carregando, exibe: carregando...
                {
                    exibeResultado.innerHTML = "Inserindo";
                }
                if(ajax.readyState == 4) // Quando estiver tudo pronto.
                {
                    if(ajax.status == 200)
                    {
                        var resultado = ajax.responseText;
                        exibeResultado.innerHTML = resultado;
                    }
                      else
                      {
                          exibeResultado.innerHTML = "Erro nas funções do Ajax";
                      }
                }
            }
            ajax.send(null); // submete
            document.getElementById("nome").value= "";//limpa os campos
            document.getElementById("endereco").value= "";
            document.getElementById("senha").value= "";
            document.getElementById("login").value= "";
            document.getElementById("cidade").value= "";
            document.getElementById("telefone").value= "";
            document.getElementById("nome").setFocus=true;

}



</script>



<link rel="stylesheet" type="text/css" href="tabelacss.css"/>
</head>

<body>

<table id="tabela_especial" align="center" width="900">
  <tr>
    <td>
      <table border="1" align="center" width="790">
        <tr>
          <td id="fundo_branco">Escrever no Banco com Ajax </td>
        </tr>
        <tr>
          <td align="left">
            <table align=center width="790">
              <tr>
                <td>
                <form  name="formgrava" action="grava_usuario.jsp">
            <table width="560">
              <tr>
                <td align="right">Nome:</td><td><input type="text" id="nome" size="30" name="nome"></td>
              </tr>
              <tr>
                <td align="right">Endereço:</td><td><input type="text" id="endereco" size="30" name="endereco"></td>
              </tr>
              <tr>
                <td align="right">Cidade:</td><td><input type="text" id="cidade" size="30" name="cidade"></td>
              </tr>
              <tr>
                <td align="right">Telefone:</td><td><input type="text" id="telefone" size="30" name="telefone"></td>
              </tr>
              <tr>
                <td align="right">Login:</td><td><input type="text" id="login" size="30" name="login"></td>
              </tr>
              <tr>
                <td align="right">Senha:</td><td><input type="password" id="senha" size="30" name="senha"></td>
              </tr>
              <tr><br></tr>
              <tr>
                <td align="left"><td><input type="button" size="30" name="gravar" id="gravar" value="Gravar" onclick="verificacampos()">
                
                <input type="button" size="30" name="cancelar" value="Cancelar">
               
              </tr>
               </form>
            </table></td>
          
           

        </tr>
          </td>
        </tr>
            </table><tr></tr>
          <table>
            <tr align="left">
              <td align="left"><font color="lightgray">Status: </font></td>
              <td align="left"><div id="exibeResultado" align="center"><font color="lightgray">Em espera</font></div></td>
            </tr>
          </table>
          <tr><td align="right"><font color="#EBD8F5">Inserção usando AJAX</font></td></tr>
      </table>
      
    </td><br>
  </tr>
  

</table>


</body>
</html>
<% // Importação de Classes Java %>

<%@ page import = "java.sql.*" %>
<%@ page import = "java.text.*" %>
<%@ page import = "java.util.*" %>

<% // Variáveis da conexão com o banco de dados %>


<%
    String url1 = "jdbc:mysql://localhost:3306/projeto2";
    String usuario = "root";
    String senha = "";
    Connection con = null;

    Statement stm = null;
 

    // conexão ao banco de dados
    Class.forName("org.gjt.mm.mysql.Driver").newInstance();
    con = DriverManager.getConnection( url1, usuario, senha);

    stm = con.createStatement();




//Parâmetros recuperados do Ajax
String login = request.getParameter("login");
String senha1 = request.getParameter("senha");
String nome = request.getParameter("nome");
String endereco = request.getParameter("endereco");
String telefone = request.getParameter("telefone");
String cidade = request.getParameter("cidade");




%>


<%  String querySQL = "";
    querySQL = "insert into geral2 (nome, endereco, telefone, cidade, login, senha) values ('"+nome+"', '"+endereco+"', '"+telefone+"', '"+cidade+"', '"+login+"', '"+senha1+"') ";

    stm.executeUpdate(querySQL);
    //Este comando devolverá "Dados inseridos com Sucesso para" o Ajax.
    out.println("Dados inseridos com Sucesso!!!");
%>

<% con.close(); %>

<%// Note que, após a inserção, a página não redireciona para nenhuma página.%>

4 Respostas

drsmachado

Sugiro, grandemente, que você estude primeiro o básico de web, requisição, resposta, sessão, escopos… Depois, estude o ajax em si e como o processo de requisição assíncrona ocorre. Após, estude ajax + jsp e veja como isso tudo se complementa.

airmigjr

Alguém poderia exemplificar em cima do meu código?

Obrigado.

drsmachado

airmigjr:
Alguém poderia exemplificar em cima do meu código?

Obrigado.


Basear as explicações no código que você postou não vai te ajudar a compreender como cada coisa funciona.
Não saber como cada coisa funciona te tornará um mau profissional, que só copia e cola códigos.
Ser um mau profissional vai te trazer decepção e frustração.
Sendo frustrado, você vai gerar código ruim, reclamar da vida e vai gerar estresse desnecessário à colegas de trabalho e pessoas que venham a revisar ou manter códigos criados por você.
Pense bem, não vai te tomar mais que 2 ou 3 horas. Estude, se dedique e depois que estiver entendendo, você poderá fazer o que está pensando.
É muito simples, demanda apenas força de vontade.
Aqui você consegue muitas informações sobre ajax

airmigjr

Obrigado pelo link!
Era isso mesmo que eu estava procurando!
Valew!

Criado 15 de maio de 2013
Ultima resposta 15 de mai. de 2013
Respostas 4
Participantes 2