2

I spent 10 years writing ASP/Ajax and MUST switch to JAVA. I am starting very simple script so as to understand the concepts clearly before diving into more complex stuff. I am using Tomcat 7, Servlet 3

The problem is. The servlet is called successfully but the form data is not transferred

This is the edited servlet (Main.java)

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class Main
 */
@WebServlet("/Main")
public class Main extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
 * @see HttpServlet#HttpServlet()
 */
public Main() {
    super();
    // TODO Auto-generated constructor stub
}

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws    ServletException, IOException {
       // TODO Auto-generated method stub
    //int ids;
    //String ids;
    //response.setContentType("text/html;charset=UTF-8");

    //PrintWriter out = response.getWriter();
    String val = request.getParameter("id");
    String name = request.getParameter("name");
    //response.getWriter().write(val);
    //response.getWriter().write("::");
    //response.getWriter().write(name);

    response.setContentType("text/plain");
    response.setCharacterEncoding("UTF-8");
    response.getWriter().write(val +" "+ name);

    //System.out.print(val);
    //if(val != null){
     //   //ids = Integer.parseInt(val);
      //  //out.print(ids);
       // out.print(val);
    //}
}
}

This is the edited JSP (Main.jsp):

<!DOCTYPE html>
<html lang="en">
<head>
    <title>SO question 4112686</title>
    <script src="http://code.jquery.com/jquery-latest.min.js"></script>

    <script>
$.ajaxSetup({ cache: false });
$(document).ready(function() {   
$('#submit').click(function(event) {
    var form = (event.target.form),
        url = "/Main"
            + "?lName=" + escape(form.elements.lName.text)
            + "&fName=" + escape(form.elements.fName.text);

    $.get(url, function(getData) { 
        $('#somediv').text(getData);         
    });
});
});
</script>

</head>
<body>
<form id="Main" action="Main" method="post">
<h4>AJAX Demo using Jquery in JSP and Servlet</h4>
Enter your Name:
<br/><input type="text" id="fName" name="fName"/>
<br/><input type="text" id="lName" name="lName"/>
<br/><input type="submit" id="submit" value="Ajax Submit"/>
<br/>
</form>

<div id="somediv">....</div>
</body>
</html>

1 Answer 1

1

Edit: If the form data is not transferred, that's because you are not sending it to the server. A GET request means you need lName=abc&fName=def appended to the URL:

<script>
$.ajaxSetup({ cache: false });
    $(document).ready(function() {   
        $('#submit').click(function(event) {
            var form = (event.target.form),
                url = "/SomeServlet"
                    + "?lName=" + escape(form.elements.lName.text)
                    + "&fName=" + escape(form.elements.fName.text);

            $.get(url, function(getData) { 
                $('#somediv').text(getData);         
            });
        });
    });
</script>
Sign up to request clarification or add additional context in comments.

2 Comments

Thanks, thanks, thanks Greg, didn't know the answer would come so fast. The data is now sent to the Servlet. I notice that the page redirects to the Java page and displays data. How do I display the Servlet output in --somediv-- without redirecting the page.
PS. I changed SomeServlet to Main. The jsp is now Main.jsp and java is now Main.java

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.