[jQuery] AJAX-postback wordt niet verwerkt

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Gynnad
  • Registratie: September 2010
  • Laatst online: 22:40
Hallo,

Ik ben een opdracht aan het maken waarbij het de bedoeling is dat er een Post methode wordt gemaakt door middel van Ajax. Nu krijg ik het alleen niet voor elkaar om de Post methode aan te roepen op de Servlet.

Mijn stukje Ajax-code ziet er als volgt uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function addComment()
{
    type: 'POST';

var name = document.getElementById('comment');

    $.post('ControllerServlet', {
        Comment: name
    },
    function(data) {
        alert(data)
        $('#addComment').html(data);
    });

}


naam servlet: ControllelServlet

Ik weet dat de Ajax code wordt aangeroepen, dit heb ik getest door middel van een alert. Het enige probleem is dat hij dus niet naar de Servlet gaat. Er moet ergens een foutje zitten, maar ik kan hem niet vinden. Iemand een tip?

"Don't worry, about a thing, Cause every little thing is gonna be alright"


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

AJAX is een techniek, geen programmeertaal. Ajax-code bestaat dan ook niet. Dit heet gewoon Javascript. Daarnaast omschrijft "post methode" je probleem niet, dus pas ik je titel even aan. Sta daar volgende keer zelf even bij stil. ;)

Waar hoort mijn topic?

PRG>>WEB

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-09 08:45
Je script gaat er nu vanuit dat er een pagina bestaat die heet "ControllerServlet". Bestaat die?

Verder, de jQuery ajax-methods hebben een prima error-handling. Wat zegt de error?

[ Voor 30% gewijzigd door Bosmonster op 18-02-2011 15:56 ]


Acties:
  • 0 Henk 'm!

  • Gynnad
  • Registratie: September 2010
  • Laatst online: 22:40
Bosmonster schreef op vrijdag 18 februari 2011 @ 15:55:
Je script gaat er nu vanuit dat er een pagina bestaat die heet "ControllerServlet". Bestaat die?

Verder, de jQuery ajax-methods hebben een prima error-handling. Wat zegt de error?
ControllerServlet die bestaat inderdaad, want deze class gebruiken we ook al voor een .get methode. Ik krijg verder geen error te zien.

Deze methode zou ie eigenlijk aan moeten roepen in de ControllerServlet
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //processRequest(request, response);
        //WERKT NOG NIET!
        //response.setContentType("text/html;charset=UTF-8");
        //PrintWriter out = response.getWriter();
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        out.print("test voor response");
//        long s = -1;
//        try {
//            if (request.getParameter("soort").equals("addComment")) {
//                s = Long.parseLong(request.getParameter("Postid"));
//                Posting post = wldi.getPosting(s);
//                long a = post.getComments().size();
//                Comment c = new Comment(a, (String) request.getParameter("comment"));
//                post.addComment(c);
//                //opvragen
//                List<Comment> comments = post.getComments();
//                request.setAttribute("Post", post);
//                request.setAttribute("comments", comments);
//                RequestDispatcher view = request.getRequestDispatcher("WeblogComments.jsp");
//                view.forward(request, response);
//            } else if (request.getParameter("soort").equals("addPost")) {
//                Posting p = new Posting(request.getParameter("title"), request.getParameter("bericht"));
//                wldi.savePosting(p);
//                List<Posting> posts = wldi.listPostings();
//                request.setAttribute("postings", posts);
//                RequestDispatcher view = request.getRequestDispatcher("Weblog.jsp");
//                view.forward(request, response);
//
//            }
//        } catch (Exception e) {
//            System.out.println("Het nummer van Postid is:" + s);
//        }


    }

[ Voor 69% gewijzigd door Gynnad op 18-02-2011 16:03 ]

"Don't worry, about a thing, Cause every little thing is gonna be alright"


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Gynnad schreef op vrijdag 18 februari 2011 @ 15:59:
[...]

ControllerServlet die bestaat inderdaad, want deze class gebruiken we ook al voor een .get methode. Ik krijg verder geen error te zien.
Ja, die class gebruik je vast wel. Maar bestaat de pagina "ControllerServlet" zonder extensie?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Gynnad
  • Registratie: September 2010
  • Laatst online: 22:40
NMe schreef op vrijdag 18 februari 2011 @ 16:00:
[...]

Ja, die class gebruik je vast wel. Maar bestaat de pagina "ControllerServlet" zonder extensie?
Ja, dan krijgen we de pagina weblog.jsp te zien, door middel van de volgende code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        long s = 0;
        try {
            s = Long.parseLong(request.getParameter("Postid"));

            Posting post = wldi.getPosting(s);
            List<Comment> comments = post.getComments();
            request.setAttribute("Post", post);
            request.setAttribute("comments", comments);
            RequestDispatcher view = request.getRequestDispatcher("Comments.jsp");
            view.forward(request, response);

        } catch (Exception e) {

            List<Posting> posts = wldi.listPostings();
            request.setAttribute("postings", posts);
            RequestDispatcher view = request.getRequestDispatcher("Weblog.jsp");
            view.forward(request, response);

        }

    }

"Don't worry, about a thing, Cause every little thing is gonna be alright"


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-09 08:45
Gynnad schreef op vrijdag 18 februari 2011 @ 15:59:
[...]
Ik krijg verder geen error te zien.
Die komt ook niet uit de lucht vallen. Pas eens wat error-handling toe om af te vangen wat er nu eigenlijk mis gaat.

Makkelijkste is even met de ajaxError, anders je $.post even omschrijven naar $.ajax, zodat je wat meer opties hebt (zoals het onerror-event).

http://api.jquery.com

[ Voor 31% gewijzigd door Bosmonster op 18-02-2011 16:27 ]


Acties:
  • 0 Henk 'm!

  • Gynnad
  • Registratie: September 2010
  • Laatst online: 22:40
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
function addComment()
{

    $.post("ControllerServlet",
    {
        
    },

    function( data ) {
        alert(data)
        $("#comments").html( data )
    })
}


Nou doet hij het wel! Bedankt iedereen voor je Response iig!

"Don't worry, about a thing, Cause every little thing is gonna be alright"


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Topicstart:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function addComment()
{
    type: 'POST';

var name = document.getElementById('comment');

    $.post('ControllerServlet', {
        Comment: name
    },
    function(data) {
        alert(data)
        $('#addComment').html(data);
    });

}


"Opgelost" post:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
function addComment()
{

    $.post("ControllerServlet",
    {
        
    },

    function( data ) {
        alert(data)
        $("#comments").html( data )
    })
}


En nu werkt 't spontaan wel :? 8)7
Iets zegt me dat je de crux achterwege laat...

[ Voor 3% gewijzigd door RobIII op 18-02-2011 17:21 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Gynnad
  • Registratie: September 2010
  • Laatst online: 22:40
RobIII schreef op vrijdag 18 februari 2011 @ 17:15:
Topicstart:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function addComment()
{
    type: 'POST';

var name = document.getElementById('comment');

    $.post('ControllerServlet', {
        Comment: name
    },
    function(data) {
        alert(data)
        $('#addComment').html(data);
    });

}


"Opgelost" post:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
function addComment()
{

    $.post("ControllerServlet",
    {
        
    },

    function( data ) {
        alert(data)
        $("#comments").html( data )
    })
}


En nu werkt 't spontaan wel :? 8)7
Nee idd het werkt nou niet, hij ging nou verder, wat ie eerst niet deed. Dus dachten we er zelf wel uit te komen en wouden we het zelf even uit proberen. Het probleem is als we eenmaal die value mee geven dan doet hij niet meer. Zeggen we van comment = "test" dan doet hij het wel. maar geven we de var name mee dan doet hij het niet meer. Waarom, geen idee vandaag geen tijd meer om er naar te kijken, morgen even opties van bosmonster gebruiken..

edit:
Nou doet ie wel wat ie moet doen, ik geef de textarea een ID en die kan ik ophalen met het volgende in het .js gedeelte: var comments = $("#commentaar").val();

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function addComment()
{
var comments = $("#commentaar").val();
alert(comments)
    $.post("ControllerServlet",
    {
       comment : comments
    },

    function( data ) {
        alert(data)
        $("#comments").html( data )
    })
}

[ Voor 14% gewijzigd door Gynnad op 18-02-2011 17:32 ]

"Don't worry, about a thing, Cause every little thing is gonna be alright"


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-09 08:45
Op zich niet zo gek, aangezien je variabele "name" verwees naar een element in de DOM...

Iets dat je volgens mij redelijk makkelijk had kunnen debuggen..

[ Voor 29% gewijzigd door Bosmonster op 18-02-2011 19:58 ]

Pagina: 1