Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Ajax i servleti - pocetak...

[es] :: Java :: Ajax i servleti - pocetak...

[ Pregleda: 2113 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

kooole

Član broj: 129945
Poruke: 43
*.dynamic.sbb.co.yu.



Profil

icon Ajax i servleti - pocetak...05.02.2008. u 01:20 - pre 197 meseci
Danas sam prvi put pokusao da uradim nesto sa Ajaxom i odmah zapelo. Pratio sam tutorial sa sun-ovog sajta, molio bih vas da pogledate gde gresim.
Evo JSP strane:

Code:

<%@page contentType="text/html; charset=UTF-8" %>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title> Web mail </title>
<script type="text/javascript" >
    
    function getXmlRequest()
    {
        var xmlHttp;
        try
          {
              // Firefox, Opera 8.0+, Safari
              xmlHttp=new XMLHttpRequest();
          }
        catch (e)
          {
              // Internet Explorer
              try
            {
                xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
            }
              catch (e)
            {
                try
                  {
                      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
                  }
                catch (e)
                  {
                      alert("Your browser does not support AJAX!");
                      return null;
                  }
            }
          }
        
        return xmlHttp;
    }
    
    
    function setMessage(message) {
        var mdiv = document.getElementById("userIdMessage");    
           mdiv.innerHTML = "<div style=\"color:red\">Message: "+message+"</ div>";
        }
    
    function saberi()
    {
        var req;
        req = getXmlRequest();
        
        if (req!=null)
        {
            var idField = document.getElementById("userid");
               var url = "/WebProjectTest/sabServlet?sab1=20&sab2=11";  
               req.open("GET", url, true);
               req.onreadystatechange = function()
            {
                if (req.readyState == 4) {
                        alert("Response (responseText) : " + req.getResponseText);
                        alert("Response (getElementByTagName) " + req.responseXML.getElementsByTagName("message")[0]);
                         var message = req.responseXML.getElementsByTagName("message")[0];
                         setMessage(message.childNodes[0].nodeValue);
                       }
            };
           req.send(null);
        }
    }
    
</script>

</head>
<body>
    <h1> TEST  </h1>
      <form action="/WebProjectTest/startServlet" method="post">
          
        <table border="0">
            <tr>
                  <td>Rezultat</td>
                  <td> <div id="userIdMessage"></div></td>
              <tr>
            <tr>
                  <td><input type="Button" onclick="saberi();"></td>
              <tr>
        </table>
      </form>
</body>

</html>



A evo i Servlet-a, odnosno njegove doGet metode:

Code:


    protected void doGet(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        super.doGet(req, response);
        
         String sab1 = req.getParameter("sab1");
         String sab2 = req.getParameter("sab2");
         
         System.out.println("Sab 1 i 2 su: " + sab1 + sab2);
           
         response.setContentType("text/xml");
         response.setHeader("Cache-Control", "no-cache");
         response.getWriter().write("<message>"+ sab1 + sab2 +"</message>"); 
          
    }



Ne obracajte mnogo paznju na logiku jer ovo je glupost koja samo treba da proradi i nista vise. Zabetonirao sam dva parametra u samom kodu, i sve sto zelim je da pri kliku na dugme server spoji ta dva parametra u jedan string i prikaze na klijentskoj strani taj string. Problem nastaje u funkciji req.onreadystatechange = function()... prvi alert mi prikazuje "undefined", a drugi "null"... kao da nista nije primljeno sa servera???
 
Odgovor na temu

samilen
Saša Milenković
Beograd

Član broj: 11606
Poruke: 106
*.dynamic.sbb.co.yu.



Profil

icon Re: Ajax i servleti - pocetak...05.02.2008. u 17:34 - pre 197 meseci
Nisam siguran, ali mi miriše da je problem u tome što forma šalje post, a ti imaš obrađen doGet.
Probaj da staviš formi method=get, ili da obrađuješ doPost metodu umesto doGet,
javi šta si uradio.
 
Odgovor na temu

nemnesic
nemnesic
Software Developer
Vranje Florida

Moderator
Član broj: 44355
Poruke: 802
*.com
Via: [es] mailing liste



+64 Profil

icon Re: Ajax i servleti - pocetak...05.02.2008. u 17:49 - pre 197 meseci
kad u ff ili IE kucas


http://SERVER//WebProjectTest/sabServlet?sab1 &sab2

sta se desava?
 
Odgovor na temu

kooole

Član broj: 129945
Poruke: 43
*.dynamic.sbb.co.yu.



Profil

icon Re: Ajax i servleti - pocetak...05.02.2008. u 18:01 - pre 197 meseci
@samilen
Mislim da nije to u pitanju posto se forma ne submituje vec se zahtev salje iz JavaScript-a i u pitanju je get zahtev (req.open("GET", url, true);). U svakom slucaju, standardno, postoji i metoda doPost(...) koja poziva isti ovaj kod. Ovaj ispis parametara u servletu radi korektno, znaci servlet je preuzeo parametre koji su poslati iz JavaScripta.


@nemnesic
Zanimljivo... dobijam sledecu poruku u browseru:

message HTTP method GET is not supported by this URL

description The specified HTTP method is not allowed for the requested resource (HTTP method GET is not supported by this URL).



Za svaki slucaj, promenio sam form method u get... ali ne pomaze.
 
Odgovor na temu

nemnesic
nemnesic
Software Developer
Vranje Florida

Moderator
Član broj: 44355
Poruke: 802
*.com
Via: [es] mailing liste



+64 Profil

icon Re: Ajax i servleti - pocetak...05.02.2008. u 18:16 - pre 197 meseci
Citat:

message HTTP method GET is not supported by this URL


kako nije supported kad imas doGet(). ????

posalji ceo servlet.

sta ce ti?
Code:

super.doGet(req, response);
 
Odgovor na temu

kooole

Član broj: 129945
Poruke: 43
*.dynamic.sbb.co.yu.



Profil

icon Re: Ajax i servleti - pocetak...05.02.2008. u 18:30 - pre 197 meseci
Hvala nemnesic i samilen... izgleda da je taj poziv doGet-a iz roditeljske klase bio problem. Nisam ni ramisljao o tome, metode doGet i doPost sam kreirao iz eclipse menija (override methods) pa Eclipse obavezno doda i taj poziv metode iz roditeljske klase. Iskren da budem, nije mi jasno kako je to moglo da smeta. Sada sve radi kako treba.
 
Odgovor na temu

[es] :: Java :: Ajax i servleti - pocetak...

[ Pregleda: 2113 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.