2014-05-06 15 views
5

Ich versuche, grundlegende Werte wie id von Jsp an das Servlet über Ajax übergeben. Ich habe alles versucht, aber nur Null wird übergeben. Sogar console.log(val) druckt nichts auf die Browser-Konsole.Java Ajax übergibt Werte von Jsp zu Servlet

Mein Verständnis ist: Webseite hat Formularwerte, die onsubmit ruft js-Datei. js hat ajax, der das Servlet aufruft und die Daten des Formulars übergibt. Die Servlet-Zupacken Daten von Ajax von request.getParameter(val)

Hier ist mein Code:

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 
    } 

} 

** Probleme:.
1) von jsp gebenen Werte
2) console.log tut etwas Druck auf Browser-Konsole

1) arbeitet, aber 2) tut noch Servlet **

+0

ein name-Attribut dazu geben user3470953

+0

ändern in user3470953

+0

versucht @ www.sblog.in aber immer noch nicht funktioniert – fscore

Antwort

4

in main.js Typ ist type: 'post' und Sie haben Code in get-Methode geschrieben type:'get'

+0

Ich wechselte jetzt zu 'post', aber immer noch kein Ergebnis. Es wird nicht einmal auf Java-Konsole gedruckt, wie hier erwähnt - System.out.print (val); – fscore

+0

+1 für Zeige-Typ Post in Ajax – SpringLearner

+0

Also sollte Typ "bekommen" und nicht post ... es funktioniert dann :) danke – fscore

2

tun gibt es kein Namensattribut in Ihrem Eingabefeld. wenn Sie

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

dann in Servlet tun, dann wird es für das Eingabefeld suchen name="id" haben, aber in der Form gibt es nichts, so dass es null zurückkehren wird;

geben Namen in das Eingabefeld wie

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

auch als sanjay gesagt hat Ihre Ajax hat Typ Beitrag so ist es auch

zu get ändern
+0

Erprobt, was immer Sie sagten, aber immer noch hat nicht funktioniert – fscore

+0

@fscore ersten Versuch, indem Sie das Formular ohne Verwendung von Ajax und lassen Sie mich wissen, ob Sie irgendwelche Werte erhalten oder nicht – SpringLearner

+0

console.log funktioniert immer noch nicht – fscore

0

Gerade für die console.log (Daten) Problem, möglicherweise $.Ajax() Funktion mit Antworttyp verwirrt, versuchen Sie dies:

  • Ajax

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

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