从servlet调用参数化的javascript函数

时间:2014-04-25 16:47:17

标签: java javascript servlets

按钮"刷新新查询"适用于不希望键入查询的懒惰用户,而是从文件读取并存储在String变量h中。如果用户点击了那个"刷新新查询!"按钮,我希望将文件中读取的文本放在文本字段中,并自动调用搜索提交按钮。

但是我无法将Servlet中的参数字符串值传递给javascript函数。此外,我对AJAX或JQuery一无所知,所以javascript中的答案将不胜感激。我也可能在表单设计中出错,因为我是一个天真的用户。

String h="test";
writer.append("<html>\n");
writer.append("<head>\n");
writer.append(String.format("<title>%s - My Search</title>\n", displayQuery));
writer.append("<script type=\"text/javascript\">\n");
writer.append("function display(k) {\n");
writer.append("   var object =k ;\n");
writer.append("document.getElementById('textfield1').value=object;\n")
writer.append("document.form.submit \n")
writer.append("  }\n");
writer.append("</script>\n");
writer.append("</head>\n<body>\n");
writer.append("</head>");
writer.append("<body>");
writer.append("<div id=\"Layer1\">");
writer.append("<form action=\"search\">");
writer.append("<input type=\"text\" id=\"textfield1\" name=\"q\" placeholder=\"Search here...\">");
writer.append("<input id=\"gobutton1\"type=\"submit\" value=\"Search\"/>");
writer.append("</form>");
writer.append(String.format("<a href=\"search?q=%s&start=%d&n=%d\"><input id=\"gobutton\"  type=\"button\" value=\"Refresh for New Query!\" onClick=\"display('"+h+"')\"/></a>",h,0,10));
writer.append("</div>");

.......

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果您想将参数从Servlet传递到JavaScript,那么它就变得简单了。 但是你应该知道JavaScript没有在服务器端处理,它将在浏览器中执行。

简单示例:

@WebServlet(name = "MyServlet", urlPatterns = {"/myservlet"})
public class MyServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html;charset=UTF-8");
        response.getWriter().write("<html><head>"+
        "<script type=\"text/javascript\">"+
        "function cc()"+
        "{alert("+new Date()+")}"+
        "</script>"+
        "</head>"+
        "<body>"+
        "<input type='button' value='click me money' onclick='cc()'>"+
        "</body>"+
        "</html>");
    }   
}