Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    37

    Validazione di form in database con AJAX

    Ciao a tutti, vi scrivo perchè ho iniziato da poco a sviluppare in ambiente web e sto riscontrando particolari difficoltà nella validazione dei dati di un form. Volevo fare una semplice schermata di login appoggiandosi ad un database e volevo utilizzare AJAX per la verifica circa la disponibilità dell'email inserita dall'utente (verificando quindi che non sia già registrato). Premetto che non posso usare PHP per motivi didattici, ho provato a usare Javascript, JQUERY, JSP e servlet ma riscontro sempre problemi!

    Questo è il codice JSP
    codice HTML:
    <%@ 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>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
    <%@page import="java.sql.*,java.util.*"%>
    <% String email_field=request.getParameter("email_field");
                try{ 
                         Class.forName("com.mysql.jdbc.Driver");
                         Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/boxit", "root", "");
                         Statement statement = con.createStatement() ;                
                        ResultSet resultset = statement.executeQuery("select email from boxer where email='"+email+"'");                                
                        if(!resultset.isBeforeFirst()) {                    
                                out.print("yes");                
                        }                                
    
                        else{                    
                                out.print("no");                
                        }            
                  }            
                  
                  catch(Exception e)
                  {                
                         System.out.print(e);                
                         e.printStackTrace();            
                   }
    %>
    </body> 
    </html>
    E quà c'è lo script in AJAX (usando JQUERY):

    codice HTML:
           
           $(document).ready(function(){
               $("#email_field").blur(function(){                        
                    var email_field = $("#email_field").val();
                    $.ajax({                          
                         url: "userValidate.jsp",
                         type: "POST",                        
                         data: "email_field="+ email_field,                         
                         success: function(server_response){                                
                                          if(server_response == "yes"){                                 
                                              $("#email_field").notify("Ok.", "success");
                                          }                                                        
                              
                                         else  if(server_response == "no"){
                                              $("#email_field").notify("Effettua il Login, sei già registrato.", "error");
                                          }                         
                                       }                             
                      });                       
                  return false;                    
               });                 
           });

    Qualcuno mi può aiutare? In caso la sezione sia errata chiedo scusa!

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    la pagina JSP non restituisce "yes" o "no", ma "<!DOCTYPE ... ... ... ... </html>"
    No

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    37
    Quote Originariamente inviata da tampertools Visualizza il messaggio
    la pagina JSP non restituisce "yes" o "no", ma "<!DOCTYPE ... ... ... ... </html>"
    Ti ringrazio per la risposta. Ho provato anche settando il content type della risposta come testo ma continuo a non ottenere nessun esito. Il server però riceve la risposta "si/no"... come andrebbe modificato?

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Il server non restituisce yen/no perché la query è sbagliata prima valorizzi la variabile email_field, ma nella query usi email (inesistente) ergo jquery non riceve nulla
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    Non conosco jsp, ma la pagina che fa il controllo dovreebbe essere così
    codice:
    <%@ page language="java" contentType="text/plain; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
    <%@page import="java.sql.*,java.util.*"%>
    <% String email=request.getParameter("email_field");
                try{ 
                         Class.forName("com.mysql.jdbc.Driver");
                         Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/boxit", "root", "");
                         Statement statement = con.createStatement() ;                
                        ResultSet resultset = statement.executeQuery("select email from boxer where email='"+email+"'");                                
                        if(!resultset.isBeforeFirst()) {                    
                                out.print("yes");                
                        }                                
    
    
                        else{                    
                                out.print("no");                
                        }            
                  }            
                  
                  catch(Exception e)
                  {                
                         System.out.print(e);                
                         e.printStackTrace();            
                   }
    %>
    No

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    ho provato a usare Javascript, JQUERY, JSP e servlet
    in realtà non dovresti proprio chiamare un jsp ma una servlet

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    37
    Quote Originariamente inviata da tampertools Visualizza il messaggio
    Non conosco jsp, ma la pagina che fa il controllo dovreebbe essere così
    codice:
    <%@ page language="java" contentType="text/plain; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
    <%@page import="java.sql.*,java.util.*"%>
    <% String email=request.getParameter("email_field");
                try{ 
                         Class.forName("com.mysql.jdbc.Driver");
                         Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/boxit", "root", "");
                         Statement statement = con.createStatement() ;                
                        ResultSet resultset = statement.executeQuery("select email from boxer where email='"+email+"'");                                
                        if(!resultset.isBeforeFirst()) {                    
                                out.print("yes");                
                        }                                
    
    
                        else{                    
                                out.print("no");                
                        }            
                  }            
                  
                  catch(Exception e)
                  {                
                         System.out.print(e);                
                         e.printStackTrace();            
                   }
    %>
    Si, avete ragione tu e cavicchiandrea, avevo copiato una versione errata del codice. In ogni caso continua a non funzionare... Il server riceve il valore ma non risponde Pensavo anch'io di usare una servlet Vindav e l'ho anche realizzata, ma stesso problema, mi manca proprio la parte di risposta dal server...

  8. #8
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Verifica la chiamata Ajax con firebug tenendo attiva la console cosi vedi sia cosa invii che cosa ricevi dal server, se non ricevi nulla al 99% il problema è lato server (codice jsp)
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    vedi anche se ci sono eccezioni sul log del server

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    37
    Ho eliminato il file jsp e sostituito con una servlet di cui riporto la doPost:

    codice HTML:
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        
        try{            
               PrintWriter out = response.getWriter();            
               String email = request.getParameter("email");            
               Class.forName("com.mysql.jdbc.Driver");              
               Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/boxit", "root", "boxit");              
               Statement statement = con.createStatement() ;              
               ResultSet rs = statement.executeQuery("select email from boxer where email='"+email+"';");              
               con.close();                            
               response.setContentType("text");  
               
               if(!rs.isBeforeFirst()){                                  
                 out.write("no");              
               }else{                              
                         out.write("yes");              
               }                      
           }        
           
           catch(Exception ecc){            
                 System.out.println("Errore: "+ecc);        
           }    
    }
    Ho risolto il problema comunque! Il problema era una stupidata... non dovevo usare in jquery la funzione ".ajax" ma ".post"! La jsp di prima infatti funziona, era corretta, anche se la servlet è più corretta! Il post si può chiudere, tutto risolto, grazie a tutti per l'aiuto!

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.