2014-05-06 11 views
5

Próbuję przekazać podstawowe wartości, takie jak id z jsp do serwletu przez ajax. Próbowałem wszystkiego, ale minęło tylko zero. Nawet console.log(val) nie drukuje niczego na konsoli przeglądarki.Java ajax przekazuje wartości z jsp do servletu

Moje rozumienie jest następujące: Strona sieci Web ma wartości formularzy, które wywołują pliki js. js ma ajax, który wywołuje serwlet i przekazuje dane formularza. Dane złapania przez serwletów z Ajax by request.getParameter(val)

Oto mój kod:

Main.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Insert title here</title> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" type="text/javascript"> 
<script src="js/main.js" type="text/javascript"></script> 
</head> 
<body> 

<form method="post" action="Main" id="firstform"> 
    <h1>Enter name:</h1> 
    <input type="text" name="id" id="id" /> 
    <input type="submit" name="submit"/> 
</form> 

</body> 
</html> 

main.js

var form = $('#firstform'); 
console.log("gi"); 
form.submit(function() 
{ 
    $.ajax({ 
     url: 'Main', 
     data: form.serialize(), 
     type: 'post', 
     success: function(data){ 
      console.log(data); 
     } 
      }); 

    //return false; 

}); 

Main.java

package servlets; 

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 doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
     int ids; 
     response.setContentType("text/html;charset=UTF-8"); 

     PrintWriter out = response.getWriter(); 
     String val = request.getParameter("id"); 
     System.out.print(val); 
     if(val != null){ 
      ids = Integer.parseInt(val); 
      out.print(ids); // 
     } 

    } 

    /** 
    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
    } 

} 

** Problemy:.
1) wartości przekazywane z jsp do serwletu
2) console.log robi niczego drukować na konsoli przeglądarki

1) działa, ale 2) nadal robi **

+0

nadać atrybut nazwy tego user3470953

+0

zmiana na user3470953

+0

wypróbowany @ www.sblog.in ale nadal nie działał – fscore

Odpowiedz

4

w main.js typu jest type: 'post' i masz napisany kod w metodzie get zrobić type:'get'

+0

Zmieniłem na "opublikować", ale nadal nie ma wyniku. Nie jest nawet drukowany na konsoli java, jak wspomniano tutaj - System.out.print (val); – fscore

+0

+1 dla typu wskazującego wpis w ajax – SpringLearner

+0

Tak więc wpisz "get", a nie publikuj ... działało to :) dziękuję – fscore

2

nie ma atrybut nazwa w polu wejściowym. kiedy robisz

String val = request.getParameter("id"); 

następnie w serwletu to będzie szukać pola wejściowego posiadającego name="id" ale w formularzu nie ma nic tak powróci null;

podać nazwę w polu wejściowym jak

<input type="text" id="id" name="id"/> 

także Sanjay powiedział Twój ajax rodzaj postu więc go zmienić na get oraz

+0

Próbowałem cokolwiek powiedziałeś ale wciąż nie działa – fscore

+0

@fscore najpierw spróbuj, przesyłając formularz bez korzystania z ajax i daj mi znać, jeśli otrzymasz żadnych wartości lub nie – SpringLearner

+0

console.log nie działa jeszcze – fscore

0

Tylko dla console.log (dane) problem, może być $.ajax() funkcja się mylić z typem reakcji, spróbuj tego:

  • Ajax

    $.ajax({ 
        url: 'Main', 
        data: form.serialize(), 
        type: 'post', 
        dataType:'text/plain', 
        success: function(data){ 
         console.log(data); 
        } 
    }); 
    
  • Servlet

    response.setContentType("text/plain;charset=UTF-8");