2017-04-18 3 views
0

私は新しい問題を解決するために様々な質問を行っていましたが、何も問題はありません。Javascript varibaleがサーブレットに送信されない

私はちょうど私がボタンをクリックしたときに、私のサーブレットへのAJAX呼び出しを作りたい、これが私のコードです:Dummy.java

sample.html

<!DOCTYPE html> 
<html> 
<body> 
<button type="button" onclick="loadDoc()">Change Content</button> 
</body> 
<script> 
function loadDoc() 
{ 
    var xhttp = new XMLHttpRequest(); 
    var data = "number=two"; 
    xhttp.open("POST","Dummy", true); 
    xhttp.send(data); 
} 
</script> 
</html> 

そしてdoPost()方法、それを取得するためにされています。

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

私は自分のコンソールでnullになっています。理由は何でしょうか?

+0

"私のコンソールにはnullが表示されています。" - どのコンソール? Javaコードのサーバー側ログを意味しますか? – Quentin

+0

はい、Javaコンソールです。 paramの値はnullです。 –

+0

通常のHTMLフォームの提出を行う場合は機能しますか? – Quentin

答えて

0

私はJavaScriptは、リクエストヘッダが含まれていることを実行します。

のContent-Type:text/plainのを;のcharset = UTF-8

おそらく(私は適切なテストを持っていません環境が利用可能)、Javaは注意を払っているため、解析していません。

あなたのコンテンツが明示的に入力説明:代わりに、手動でデータを構築する

var xhttp = new XMLHttpRequest(); 
xhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 

をそれともいるFormDataオブジェクトを使用(マルチパート/フォームデータを生成し、XHRが自動的にそれから、コンテンツタイプを設定してみましょう):

var xhttp = new XMLHttpRequest(); 
var data = new FormData(); 
data.append("number", "two"); 
xhttp.open("POST","Dummy", true); 
xhttp.send(data); 
+0

あなたのFormDataオブジェクトへのアプローチは私には役に立たなかった。それは私にサーブレット側でnull値を与えました。 あなたの最初の方法は、 'setRequestHeader'メソッドが' open'メソッドの後に書かれていれば、私のために働いてくれました。 'のvar xhttp =新規のXMLHttpRequest();' 'xhttp.open( "POST"、 "READ2"、TRUE);' 'xhttp.setRequestHeader( "コンテンツタイプ"、「アプリケーション/ X-WWW -form-urlencoded ");' –

関連する問題