使用ajax和Java servlet读取输入

时间:2012-05-04 12:23:45

标签: java ajax servlets

我是java和ajax和servlets的新手。我编写了一个程序来读取用户的输入,并在一些教程的帮助下将字典打印到网页上。

当我在servlet的doPost方法中读取网页的输入时,它无法读取它并返回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>

以下是我试图在servlet中获取输入的代码部分:

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);

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

由于您正在使用document.getElementById(),请尝试在HTML中的inputWord控件上设置id属性:

<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>

有关document.getElementById()的更多信息:

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

答案 1 :(得分:1)

我发现对于AJAX问题,能够看到实际发送到服务器的内容有时很有用,这样您就可以验证它是否符合预期。

我通常使用Firefox和一个名为Firebug的有用插件(我没有进行任何Web开发)。它允许您查看Ajax请求,以便您可以检查是否正在发送正确的信息并且结构正确。

在这种情况下,你可能已经注意到你没有正确发送“inputWord”,因为输入时没有ID:

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