2012-05-04 11 views
1

javaとajaxとサーブレットの新機能です。私はユーザーからの入力を読み、いくつかのチュートリアルの助けを借りて辞書の意味をWebページに出力するプログラムを書いた。ajaxとJavaサーブレットで入力を読み取る

サーブレットのdoPostメソッドでWebページから入力を読み込むと、読み込みに失敗しnullが返されます。おそらく、送信ボタンの前に入力を読み込もうとしています。どのように私はこれを解決するつもりですか?ここに私のJSPファイルの関連コードさ:

function ajaxFunction() { 
    if(xmlhttp) { 
    var inword = document.getElementById("inputWord"); 
    xmlhttp.onreadystatechange = handleServerResponse; 
    xmlhttp.open("GET","gettime?inputWord="+ inword.value , true); //gettime will be the servlet name 
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
    xmlhttp.send(null); 
    } 
} 

...

<form name="myForm"> 
Enter the word: <input type="text" name="inputWord" /> 
<br /> 
Meaning:<input type="text" name="time" /> 
<br /> 
<input type="button" onClick="javascript:ajaxFunction();" value="Click to get the Meaning on Textbox"/> 
<br /> 
</form> 

そして、ここでは、私は私のサーブレットで入力を取得しようとしているコードの一部であります

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

     String inWord = request.getParameter("inputWord"); // word to search in the dictionary 
     PrintWriter out = response.getWriter(); 
... 

毎回私はプロジェクトを実行しようとしますrequest.getParameter("inputWord");はnullを返します。

xmlhttp.open("GET","gettime?inputWord="+ inword.value , true);のコードのいくつかの組み合わせを試しましたが、xmlhttp.open("GET","gettime", true);のように動作しませんでした。

また、doGetメソッドでdoPost(request,response);を呼び出します。

ご了承ください。

+0

AJAXなしで動作させることはできますか? – heikkim

+0

Hm、あなたのAjax呼び出しでGETリクエストを実行すると、doPostがトリガされるべきではありません。それともdoGetはdoPostに転送しますか? – home

+0

辞書部分はうまく動いていますが、私はdoJostメソッドでdoPost(request、response);と呼ぶことを忘れました。( – bliss

答えて

1

あなたがのdocument.getElementById()を使用しているので、あなたのHTMLにinputWordコントロールにid属性を設定してみてください:のdocument.getElementById(上

<form name="myForm"> 
Enter the word: <input type="text" name="inputWord" id="inputWord" /> 
<br /> 
Meaning:<input type="text" name="time" /> 
<br /> 
<input type="button" onClick="javascript:ajaxFunction();" value="Click to get the Meaning on Textbox"/> 
<br /> 
</form> 

詳細):

http://www.tizag.com/javascriptT/javascript-getelementbyid.php

+0

ああ、私はgetElementByName ! – bliss

+0

喜んでお手伝いします。これで問題は解決しましたか? –

1

AJAXの問題では、サーバーに実際に送信されているものが何であるかを確認できるようにすることが有用なことがあります。

私は通常、Firefoxと便利なアドオンFirebug(私はこれを使わないでウェブ開発をしません)を使用します。これにより、Ajaxリクエストが作成されているのを確認できるので、正しい情報が送信されているかどうか、正しく構造化されているかどうかを確認できます。

このケースでは、あなたが入力時にIDを持っていないので、「inputWord」は正しく入力されます:

<input type="text" name="inputWord" id="inputWord" /> 
関連する問題