【问题标题】:Reading input with ajax and Java servlet使用 ajax 和 Java servlet 读取输入
【发布时间】:2012-05-04 12:23:45
【问题描述】:

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

我还在我的 doGet 方法中调用 doPost(request,response);

感谢任何帮助。

【问题讨论】:

  • 你能在没有 AJAX 的情况下让它工作吗?
  • 嗯,您在 Ajax 调用中执行 GET 请求,不应触发 doPost。还是您的 doGet 前进到 doPost?
  • 字典部分运行良好,但我应该使用 ajax 来完成 :(
  • 哦我忘了我打电话给'doPost(request,response); ' 在我的 doGet 方法中

标签: java ajax servlets


【解决方案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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-22
      • 2012-11-17
      • 1970-01-01
      • 2012-04-07
      • 2011-11-16
      • 1970-01-01
      相关资源
      最近更新 更多