Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    da ajax a servlet passando per il form..

    Ragazzi ho un piccolo problema con l'invio di dati da un form.in pratica tramite form devo inserire due numeri e scegliere tra il tipo di operazione (somma / differenza).all'atto della scelta dell'operazione , mi dovrebbe apparire subito il risultato senza aver premuto il tasto di submit(che non c'è). Un funzione Ajax si occupa di richiamare una servlet per quest'operazione. ma non so come fare.vi scrivo il codice che ho creato ma che non funziona ,ovviamente..
    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Documento senza titolo</title>
    <script type="text/javascript">
    function valida()
    {
    var n1=document.getElementById("num1");
    var n2=document.getElementById("num2");
    var url="validate?";
    url+="num1="+escape(n1);
    url+="&";
    url+="num2="+escape(n2);
    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)
      {document.getElementById('ris').innerHTML=xmlhttp.responseText}
    }
    
    xmlhttp.open("GET",url,true);
    xmlhttp.send(null);
    }
    </script>
    </head>
    
    <body>
    <h1 style="text-align:center"> Form Ajax </h1>
    <form id="form1">
      Numero 1:
      <label>
      <input type="text" name="num1" id="num1" />
      </label>
      
    
    
        <label>
        Numero 2:
        <input type="text" name="num2" id="num2" />
        </label>
      </p>
      
    
    
        Somma 
        <label>
        <input type="radio" name="radio" id="somma" value="somma" onkeyup="valida()" /> 
        Differenza
        <input type="radio" name="radio" id="differenza" value="differenza" onkeyup="valida()" />
        </label>
      </p>
      
    
    
        <label>
        <input type="reset" name="cancella" id="cancella" value="cancella" />
        </label>
      </p>
    </form>
    <div id="ris"></div>
    </body>
    </html>
    ---------------------------
    import java.io.*;
    import java.util.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    
    
    public class ValidateServlet extends HttpServlet {
        
        public void doGet(HttpServletRequest req, HttpServletResponse  res)
            throws IOException, ServletException {
    
            String n1 = req.getParameter("num1");
          String n2 = req.getParameter("num2");   
          String op=req.getParameter("radio");
          if(op=="somma")
          {
             res.setContentType("text/html");
             res.getWriter().write(n1+n2);
          }
    
            
        }
    }
    Spero che mi possiate aiutare perchè ho urgente bisogno di questa cosa in quanto sto facendo un sito di matematica per dei bambini. grazie.

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Questo è un esempio funzionante http://www.webprogetti.it/prove/prova.html la parte lato server è in asp (non conosco jsp) ma il concetto non cambia, nel sorgente trovi tutto

    P.S. Ti ricordo che è vietato sollecitare, a prescindere dalle urgenze
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    ti ringrazio tanto e scusami per l'urgenza.Purtroppo però adesso il problema via servlet..il codice che ho inserito è:
    codice:
    import java.io.*;
    import java.util.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    
    
    public class ValidateServlet extends HttpServlet {
        
        public void doGet(HttpServletRequest req, HttpServletResponse  res)
            throws IOException, ServletException {
    
            res.setContentType("text/html");
            res.setHeader("Cache-Control", "no-cache");
            
            String num1=req.getParameter("num1");
            String num2=req.getParameter("num2");
                  
            res.getWriter().write(Integer.parseInt(num1)+Integer.parseInt(num2));
            
    
            
        }
    }
    ho provato solo con la somma ma non và...come mai?

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Come t'ho già detto non lo conosco, oltretutto è un linguaggio (ancora) poco conosciuto perché lo cosca qualcuno altro, forse è meglio se ti fati spostare (segnalando al moderatore) sul forum java.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    nessuno mi puo aiutare con la servlet?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da OaCkLeY86
    ti ringrazio tanto e scusami per l'urgenza.Purtroppo però adesso il problema via servlet..il codice che ho inserito è:
    codice:
    res.getWriter().write(Integer.parseInt(num1)+Integer.parseInt(num2));
    Sarebbe tutto giusto (il setContentType, i getParameter) a parte che il codice sopra è concettualmente sbagliato (per quanto volevi fare).

    Il parseInt dà un int. Tu hai due int, li sommi e ottieni ... un int. Già ma poi lo passi a write(). Il fatto è che viene usato il:

    public void write(int c)

    Writes a single character.
    Viene scritto 1 carattere che ha il codice del int passato!! Se la somma fosse 65 stamperebbe una 'A'. Non è quello che ti serve, insomma.

    O usi print()/println() (quello che riceve un int è fatto apposta per stampare la rappresentazione del valore int) oppure usi il write(String s) facendo .write("" + Integer.parse........
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    ciao ho provato anche a usare
    codice:
    PrintWriter out=res.getWriter();
    out.println(Integer.parseInt(num1)+Integer.parseInt(num1));
    ma il risultato non è cambiato..forse sbagliato qualche impostazione..ma non so quale..

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da OaCkLeY86
    ma il risultato non è cambiato..
    Scusa ma il problema esatto quale è? La servlet è "mappata" correttamente?
    E se da un browser richiedi es.:

    http://blabla......url_mappato_su_se...um1=12&num2=20

    cosa ottieni?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    nulla..non ottengo nulla.. per mappata tu intendi il file web.xml? è creato bene..se vuoi lo posto..
    codice:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    
    <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
        version="2.4">
    
      <display-name>Welcome to Tomcat</display-name>
      <description>
         Welcome to Tomcat
      </description>
    
    
    
        <servlet>
            <servlet-name>valid</servlet-name>
            <servlet-class>ValidateServlet</servlet-class>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>valid</servlet-name>
            <url-pattern>/validate</url-pattern>
        </servlet-mapping>
    
    
    
    </web-app>

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da OaCkLeY86
    per mappata tu intendi il file web.xml?
    Sì, è quello che si intende!

    Originariamente inviato da OaCkLeY86
    codice:
        <servlet>
            <servlet-name>valid</servlet-name>
            <servlet-class>ValidateServlet</servlet-class>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>valid</servlet-name>
            <url-pattern>/validate</url-pattern>
        </servlet-mapping>
    Così mi pare corretto. Sarebbe preferibile se la servlet (e qualunque altra classe) fosse dichiarata all'interno di un "package". Comunque se tutto è compilato e deployato come si deve .... dovrebbe funzionare.

    Cioè se da browser richiedi: http://blabla..../nome-tua-app/validate?....parametri.....

    Dovresti ottenere il risultato generato dalla servlet.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.