Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2015
    Messaggi
    5

    Problema invio dati di un form da Ajax alla servlet

    Buonasera, cercando e spulciando a lungo su internet non ho trovato nessuna risposta al mio problema, pertanto spero che voi possiate essermi di aiuto

    In pratica io ho dei dati di un form html da inviare con Ajax alla servlet, per maggiore chiarezza vi posto i pezzi di codice incriminato in modo che possiate indicarmi dove sto sbagliando:

    Questo è l'html del mio form:
    codice:
    <p id="myParp"> ciao </p>
    
                <!-- Creo il form -->
                <!-- action="mailto:juymiu@yahoo.it?subject=Yes" method="post" -->
                <form id="myForm" name="datiPerPosta" action="mailto:juymiu@yahoo.it?subject=Yes" method="post" enctype="text/plain" >
                
                    Username:
                    <input id="user" type="text" size="18" name="user" />
    
                    <br />
                    <br />
    
                    Inserire password:
                    <input id="pwd" type="password" size="18" name="password" />
                    
                    <br />
                    <br />
                    
                    Conferma password:
                    <input id="conferma" type="password" size="18" name="conferma" />
    
                    <br />
                    <br />
    
                    Città:
                    <input id="citta" type="text" name="citta" />
                    
                    <br />
                    <br />
    
                    Età:
                    <!-- onclick="verify();" -->
                    <input id="eta" type="text" />
                    <br />
                    <br />
    
                    <button id="send" onclick="verify();" type="submit">
                        invia
                    </button>
    
                </form>
    Questa è la mia chiamata Ajax:
    codice:
    console.log("Prima dell'ajax");
        
        $.ajax({
            type: 'POST',
            url: "http://localhost:8080/ServletCompito4/Main",
            data: "user=" + user + "&password=" + pwd + "&citta=" + citta + "&eta=" + eta,
            dataType: "html",
            success:function message(msg) {
                console.log("SUCCESS");
                $("myParp").html("SUCCESSO");
                
            },
            error:function message(msg) {
                console.log("ERROR");
                $("myParp").html("ERRORE");
                
            }
            
        });
        
        console.log("Dopo Ajax");
    Ho già controllato la correttezza dei parametri user, pwd, ecc

    Come server uso TomCat.
    Il codice della mia servlet è:
    codice:
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
    
            BufferedReader buf = request.getReader();
            System.out.println(buf.readLine());
    
            str = "Sono dentro doGet ";
    
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();
            out.println(str);
    
            System.out.println("CIAOOOOOOOOOOOONEEEEEE");
    
    
        }
    
        /**
         * Handles the HTTP <code>POST</code> method.
         *
         * @param request servlet request
         * @param response servlet response
         * @throws ServletException if a servlet-specific error occurs
         * @throws IOException if an I/O error occurs
         */
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
    
            BufferedReader buf = request.getReader();
            System.out.println(buf.readLine());
    
            str = "Sono dentro doPost";
    
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();
            out.println(str);
    
            System.out.println("CIAOOOOOOOOOOOO");
    
            // processRequest(request, response);
        }
    Il codice del mio web.xml è:
    codice:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
        <servlet>
            <servlet-name>Main</servlet-name>
            <servlet-class>Main</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>Main</servlet-name>
            <url-pattern>/Main</url-pattern>
        </servlet-mapping>
        <session-config>
            <session-timeout>
                30
            </session-timeout>
        </session-config>
    </web-app>
    Il mio index.jsp è:
    codice:
    <%-- 
        Document   : index
        Created on : 15-gen-2015, 18.04.57
        Author     : ale
    --%>
    
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>JSP Page</title>
        </head>
        <body>
            <h1>Hello World!</h1>
        </body>
    </html>
    Ho i ldubbio che dipenda dal passaggio di data nella chiamata Ajax, ma non ho la più pallida idea di come farla.
    Grazie mille dell'attenzione
    Ultima modifica di axtml; 15-01-2015 a 21:25

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Due cose.
    1) Non hai detto quale problema riscontri.
    2) Il web.xml è potenzialmente sbagliato: nel nodo <servlet-class> va specificato il Fully Qualified Name della classe, quindi va messo anche tutto il package della classe (tu hai scritto solo il Simple Name) e, da quel che ricordo, una servlet deve risiedere all'interno di un package (non può, cioè, stare nel default-package... ma mi riservo di verificare quest'ultima cosa).


    Edit: non ho trovato riscontro in merito al packaging delle Servlet; ad ogni modo, diverse fonti riportano che "possono succedere cose strane" se le servlet risiedono nel default-package, per cui è buona norma non usarlo.

    Ciao.
    Ultima modifica di LeleFT; 16-01-2015 a 11:00
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2015
    Messaggi
    5
    Intanto grazie per aver risposto
    1) Il problema è che ho notato che sulla console viene stampato solo il messaggio "Prima dell'ajax" collocato prima della chiamata "Post" di AJax, e non vedo succedere altro.

    2) Sì infatti a tempo di creazione della servlet Netbeans mi aveva consigliato di non usare il package di default, ora ho inserito la servlet nel package "compito4Interface".

    Nel web.xml ho cambiato la riga che mi avevi detto così:
    codice:
    <servlet-class>compito4Interface.Main</servlet-class>
    Però ancora ho lo stesso errore.
    Non riesco a capire in che punto si blocca la cosa e come scoprirlo. Forse più che altro ho le idee un po' confuse sulla comunicazioen tra ajax e la servlet, ma girando per internet non ho trovato alcuna guida o post utile su come risolvere ç_ç

  4. #4
    Ad occhio il codice è corretto tranne l'aggiornamento del paragrafo deve essere "#myParp"

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Dal punto di vista della Servlet non fa alcuna differenza; che sia l'utente con una richiesta via browser, che sia il browser tramite Ajax, che sia un programma esterno o qualunque altra cosa, alla Servlet frega proprio niente: lei riceve una richiesta e a questa risponde. Punto.

    Il punto "dolente" è proprio cosa accade lato client: dal tuo codice si vede che stai usando jQuery (che io non conosco, né ho mai usato in vita mia:ho sempre fatto le richieste Ajax a mano). Quindi, a quanto pare devi prima di tutto capire (e, magari chiedere nel forum JavaScript) se quel codice fa esattamente ciò che ti aspetti e/o se servano configurazioni o altro.

    Una cosa, comunque,che puoi fare per verificare che tutto funzioni lato server è controllare i log del servlet container/application server.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Dal punto di vista della Servlet non fa alcuna differenza; che sia l'utente con una richiesta via browser, che sia il browser tramite Ajax, che sia un programma esterno o qualunque altra cosa, alla Servlet frega proprio niente: lei riceve una richiesta e a questa risponde. Punto.

    Il punto "dolente" è proprio cosa accade lato client: dal tuo codice si vede che stai usando jQuery (che io non conosco, né ho mai usato in vita mia:ho sempre fatto le richieste Ajax a mano). Quindi, a quanto pare devi prima di tutto capire (e, magari chiedere nel forum JavaScript) se quel codice fa esattamente ciò che ti aspetti e/o se servano configurazioni o altro.


    Ciao.
    I know Jquery. Il codice è "quasi" corretto, tranne appunto l'aggiornamento del contenuto del paragrafo.

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Quote Originariamente inviata da francesco.muia Visualizza il messaggio
    I know Jquery. Il codice è "quasi" corretto, tranne appunto l'aggiornamento del contenuto del paragrafo.
    Ok... il mio dubbio è che non so se stia includendo nella pagina le librerie giuste/necessarie per jQuery


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2015
    Messaggi
    5
    Quote Originariamente inviata da francesco.muia Visualizza il messaggio
    Ad occhio il codice è corretto tranne l'aggiornamento del paragrafo deve essere "#myParp"
    Sì grazie per avermelo fatto notare, mi ero scordato "#", comunque ho corretto e non cambia nulla, è proprio sulla chiamata post che si pianta, avevo pensato fosse la stringa
    codice:
    data: "user=" + user + "&password=" + pwd + "&citta=" + citta + "&eta=" + eta,
    il problema, ma non so come metterla diversamente

    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Ok... il mio dubbio è che non so se stia includendo nella pagina le librerie giuste/necessarie per jQuery


    Ciao.
    Sì l'inclusione della libreria JQuery è corretta (infatti le altre op JQuery funzionano), non capisco cosa fallisca della chiamata

  9. #9
    Fai due controlli, primo controlla nel tab degli strumenti di sviluppo del browser se la chiamata alla servlet parta e se parte con che status code finisce.
    Secondo controlla nel file di log di tomcat che non vi siano errori.
    (Nella pagina che hai postato il js di jquery non c'è)

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2015
    Messaggi
    5
    Ho provato a mettere come action del form l'indirizzo della servlet
    (oovero
    codice:
    <form id="myForm" name="datiPerPosta" action="http://localhost:8080/ServletCompito4/Main" method="post" enctype="text/plain" >
    )

    E mi carica correttamente la pagina creata dal metodo doPost() delal servlet, quindi a questo punto mi sa che il problema sia tutto nell'invocazione ajax.
    Ora cerco di capire cosa sbaglio

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.