2017-01-17 17 views
-2

JavaサーブレットをAJAX呼び出しで呼び出していますが、要求から入力パラメータを読み取ることができません。私は、次の2つの方法を試してみたが、運と:サーブレットへのAjax呼び出し、パラメータの取得

var id; 
$("#scan").click(function() { 
    id = 1; 
    $.ajax({ 
     type: "POST", 
     data: id, 
     url: "http://10.1.42.249:8080/test-notifier-web/RestLayer" 
    }); 
}); 

そして:

id = 1; 
$.post('http://10.1.42.249:8080/test-notifier-web/RestLayer', { 
    reqValue: id 
}, function(responseText) { 
    // $('#welcometext').text(responseText); 
    alert("OK!!!"); 
}); 

私のサーブレットのコードはリクエストパラメータの簡単なログ印刷ですが、戻り値は常にnullです。

String reqID = ""; 
log.info("Servlet called"); 
reqID = request.getParameter("reqValue"); 
log.info("reqID = " + reqID); 

どうすればこの機能を利用できますか?

私は、コードの作業を取得するために見つけた唯一の方法はhttp://10.1.42.249:8080/test-notifier-web/RestLayer?reqValue=1

+1

あなたの第二の例使用して '$ .post'は動作するはずです。コンソールに何かエラーがありますか? –

+0

サーブレットが呼び出されたかどうかチェックしていますか? –

+0

サーブレットがHTTP POSTをサポートしているかどうかを確認します。あなたのサーブレットに 'doPost'がありますか? – vijayP

答えて

2

私はあなたのコードをチェックしました。これは私の作業コードです。

<%@ 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="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 

<script type="text/javascript"> 
    var id; 

    function fun() { 
     alert("aaaa"); 
     id = 1; 

     $.ajax({ 
      type : "POST", 
      data : { 
       reqValue : id 
      }, 
      url : "/WebProject/callAjax" 
     }); 
    } 
</script> 
</head> 
<body> 
    <button id="scan" onclick="fun()">Sacn</button> 
</body> 
</html> 

//サーブレット

@WebServlet(urlPatterns = {"/callAjax",}) 
public class Test extends HttpServlet { 
    private static final long serialVersionUID = 1L; 


    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     doPost(request, response); 
    } 

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     System.out.println(request.getParameter("reqValue")); 
    } 

} 
+0

私のために働いています。ありがとうございました! – slash89mf

0
var id; 

$("#scan").click(function() { 

     id = 1; 

     $.ajax({ 
      type: "POST", 
      data: { reqValue : id}, 
      url: "http://10.1.42.249:8080/test-notifier-web/RestLayer" 
     }); 
}); 

ようにあなたはサーブレットでオーバーライドする必要があるさまざまな方法がありますが、URLをサーブレットにパラメータを手動で追加です。

私はdoGet()メソッドを使用していると思われます。なぜなら、あなたのJavaコードが動作しているURLにパラメータを追加するとき、そして他の2つのケースでは、 type : "POST" javaコードがRequest Bodyからデータを読み取ることができません(postメソッドでは、データはRequest Bodyに追加されます)。

doGet()の代わりにdoPost()またはservice()のメソッドを使用することをお勧めします。

関連する問題