1

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

当我在 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 );但没有奏效。

我还调用doPost(request,response);了我的 doGet 方法。

任何帮助表示赞赏。

4

2 回答 2

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

于 2012-05-04T12:35:16.663 回答
1

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

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

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

<input type="text" name="inputWord" id="inputWord" />
于 2012-05-04T13:26:41.270 回答