2015-07-01 33 views
4

我是新的servlet,我能夠從servlet獲取數據,但無法發送數據,並且我想在不使用提交表單的情況下執行此操作,我可以在按鈕,它會去servlet和返回文本而不是價值的點擊得到一些幫助,請如何使用Ajax無需提交表單發送數據到servlet

發送給它

這是我的index.jsp

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <title>SO question 4112686</title> 
    <script src="http://code.jquery.com/jquery-latest.min.js"></script> 
    <script> 
     $(document).ready(function() {      
      $('#somebutton').click(function() {    
       $.get('GetUserServlet', function(responseText) { 
        $('#somediv').text(responseText);   
       }); 
      }); 
     }); 
     $("#somebutton").click(function(){ 
     $.ajax 
     (
     { 
      url:'GetUserServlet', 
      data:{name:'abc'}, 
      type:'get', 
      cache:false, 
      success:function(data){alert(data);}, 
      error:function(){alert('error');} 
     } 
    ); 
} 
); 
    </script> 
</head> 
<body> 

    <button id="somebutton" onclick="showHint('GetUserServlet.java', 'travis');">press here</button> 
    <div id="somediv"></div> 
</body> 

這是我的servlet

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
String text = "Update Sucessful"; 
String name = request.getParameter("name"); 


response.setContentType("text/plain"); // Set content type of the response so that jQuery knows what it can expect. 
response.setCharacterEncoding("UTF-8"); // You want world domination, huh? 
response.getWriter().write(name + text);  // Write response body. 
+0

你可以使用jQuery? – Pherion

+0

從來沒有使用過,但我願意嘗試 – Travis

+0

第二次看,你已經是:)這些$是jQuery調用。所以你已經在使用jQuery.ajax()函數了。給我一些看看我現有的ajax/servlet交互以記住它是如何工作的:) – Pherion

回答

1

,你既可以使用$阿賈克斯()或$。員額這裏。因爲你已經使用$ .ajax()。請參考以下修正:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <title>SO question 4112686</title> 
    <script src="http://code.jquery.com/jquery-latest.min.js"></script> 
    <script> 
     $(document).ready(function() {      
      $('#somebutton').click(function() {    
       $.get('GetUserServlet', function(responseText) { 
        $('#somediv').text(responseText);   
       }); 
      }); 
     }); 


     $("#somebutton").click(function(){ 
     $.ajax({ 
      url:'GetUserServlet', 
      data:{name:'abc'}, 
      type:'get', 
      cache:false, 
      success:function(data){ 
       alert(data); 
       $('#somediv').text(responseText); 
      }, 
      error:function(){ 
       alert('error'); 
      } 
     } 
    ); 
} 
); 
    </script> 
</head> 
<body> 

    <button id="somebutton">press here</button> 
    <div id="somediv"> </div> 
</body> 

和你的servlet應該是:

import java.io.IOException; 
import java.io.PrintWriter; 
import javax.servlet.*; 
import javax.servlet.http.*; 

public class GetUserServlet extends HttpServlet { 
    public void doGet(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException { 
    doPost(request, response); 
    } 

    public void doPost(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException { 
    String text = "Update successfull"; //message you will recieve 
    String name = request.getParameter("name"); 
    PrintWriter out = response.getWriter(); 
    out.println(name + " " + text); 
    } 
2

您可以使用$ .post方法來實現此目的。
這裏是我的解決方案
的index.jsp

<!DOCTYPE html><html lang="en"> 
<head> 
    <title>SO question 4112686</title> 
    <script src="http://code.jquery.com/jquery-latest.min.js"></script> 
    <script> 
    $(document).ready(function() { 
     $("#somebutton").click(function() { 
      servletCall(); 
     }); 

    }); 
    function servletCall() { 
     $.post(
      "GetUserServlet", 
      {name : "Message from jsp"}, //meaasge you want to send 
      function(result) { 
      $('#somediv').html('Here is your result : <strong>' + result + '</strong>'); //message you want to show 
     }); 
    }; 
    </script> 
</head> 
<body> 
    <button id="somebutton">press here</button> 
    <div id="somediv"></div> 
</body> 
</html> 

GetUserServlet.java

import java.io.IOException; 
import java.io.PrintWriter; 
import javax.servlet.*; 
import javax.servlet.http.*; 

public class GetUserServlet extends HttpServlet { 
public void doGet(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    doPost(request, response); 
} 

public void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    String text = "<br>Message from servlet<br>"; //message you will recieve 
    String name = request.getParameter("name"); 
    PrintWriter out = response.getWriter(); 
    out.println(text + name); 
} 
} 
相關問題