Consultar dados usando ajax e jquery

4 respostas
V

Pessoal é o seguinte, no meu sistema eu tenho um select que recebe os cursos, e outra que recebe as turmas, os cursos são dados em turmas especificas então o que pretendo fazer é selecçionar o curso e ao msmo tempo me dar as turmas daquele curso para efectuar essa manipulação estou a usar o ajax, então eu tenho um metodo na classe TurmaDao que consulta a turma de um determinado curso, eis o codigo:

public class TurmaDao {
    private final String consultarTurmaPorCurso = "select c.nome_curso, t.nome_turma from cursos c, turmas t, cursos_turmas ct where "
            + "c.codigo_curso = ct.codigo_curso and t.codigo_turma = ct.codigo_turma and ct.codigo_curso = ?";
    Connection conexao;
    PreparedStatement ps;
    ResultSet rs;
    public List<TurmaModelo> consultarTurmaPorCurso(String codigoCurso){
        List<TurmaModelo> ltm = new ArrayList<TurmaModelo>();
        try{
            conexao = Conexao.conectar();
            ps = conexao.prepareStatement(consultarTurmaPorCurso);
            rs = ps.executeQuery();
            while(rs.next()){
                TurmaModelo tm= new TurmaModelo();
                tm.setCodigo(rs.getString("codigo_turma"));
                tm.setNome(rs.getString("nome_turma"));
                ltm.add(tm);
            }
        }
        catch(SQLException sqle){
            JOptionPane.showMessageDialog(null, "Erro: Impossivel carregar as turmas " + sqle);
        }
        return ltm;
    }

Esse meu metodo recebe um parâmetro que é o codigo, e o parâmetro que eu devo passar no metodo eu recebo via ajax, então quando ele tenta consultar a turma de um curso especifico ele me diz que não consegue encontrar a turma porque não foi passado nenhum parâmetro o que é logico. O meu script em js está desse jeito:

<script type="text/javascript">
   $(function(){
       $('#btninserir').click(function(){
           var nome = $('#nomecurso').val();
           //console.log(nome);      
           $.ajax({
              url: 'nova_matricula.jsp',
              type: 'POST',
              data: nome,
              
              sucess: function(resultado){
                  console.log(resultado);
              }
           });
           return false;
       });
   }); 
</script>

E eu crio o meu select desse jeito:

<select name="nomeTurma" id ="nometurma">
                        <%
                            String pegaNomeCurso;
                            pegaNomeCurso = request.getParameter("nomeCurso");//Não funciona
                            
                            TurmaDao td = new TurmaDao();
                            List<TurmaModelo> ltm = td.consultarTurmaPorCurso(pegaNomeCurso);
                            for(TurmaModelo tm: ltm){
                        %>
                    	<option selected="selected">--Selecçione a turma--</option>
                         <option value=<%=tm.getCodigo()%>><%=tm.getNome()%></option>
                           <%
                               }
                          %>
                    </select>

Então o que eu quero saber é como passar esse parâmetro que está no script para o parâmetro da minha função.

4 Respostas

T

Nos parâmetros da requisição ajax, tenta passar o data dessa forma:

<script type="text/javascript">
   $(function(){
       $('#btninserir').click(function(){
           var nome = $('#nomecurso').val();
           //console.log(nome);      
           $.ajax({
              url: 'nova_matricula.jsp',
              type: 'POST',
              data: "nomeCurso="+nome,
              
              sucess: function(resultado){
                  console.log(resultado);
              }
           });
           return false;
       });
   }); 
</script>

Fonte: http://api.jquery.com/jQuery.ajax/

E uma sugestão: tenta evitar o uso de scriptlets na tua JSP. Tenta concentrar a maior parte da lógica em uma Servlet e utiliza JSTL na JSP para fazer as lógicas simples (iteração, condição, etc).
O código fica mais organizado e legível. Não é recomendado utilizar scriptlets (<% %>), prefira JSP Expression Language (${ }) junto com JSTL.

V

tuliomonteazul, o erro permanece não sei se é por a URL ser a propria pagina aonde preciso carregar a combobox, porque tudo está em nova_matricula.jsp. Com relação a tua sugestão eu sei que o mais correcto é usar EL e JSTL mais como tenho apenas noções basicas sobre eles e o projecto deve ser entregue daqui a dias então prefiro usar scriptlets para acelerar o processo, quem sabe no proximo uso EL e JSTL

T

É, talvez seja isso. Tenta fazer essa requisição ajax para uma Servlet nova e vê se o parâmetro chega nela.

V

Não percebi

Criado 21 de junho de 2011
Ultima resposta 21 de jun. de 2011
Respostas 4
Participantes 2