从JavaScript调用Servlet

时间:2014-11-03 11:26:51

标签: java javascript jsp servlets

我打算在JavaScript中调用一个函数,然后在单击<input type="image">后调用一个Servlet。

JSP:

<head>
    <script type="text/javascript">
        function callServlet() {
            document.location.href="test-servlet.jsp";
        }
    </script>
</head>

<body>
    <form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
    ...
    <input type="image" name="submit"
        src="https://www.paypalobjects.com/webstatic/en_US/btn/btn_buynow_pp_142x27.png"
        onclick="callServlet()" alt="PayPal - The safer, easier way to pay online!">
    </form>
</body>

Servlet(test-servlet.jsp):

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html");

    PrintWriter out = response.getWriter();

    out.println("<h1>TestServlet called successfully!</h1>");
}

背景根 http://localhost:8080/mysite/test-servlet.jsp

但是,单击图像按钮时没有任何反应。我是JavaScript的新手。

2 个答案:

答案 0 :(得分:1)

试试此代码

<a href="#" onclick="callServlet()"><img
    src="https://www.paypalobjects.com/webstatic/en_US/btn/btn_buynow_pp_142x27.png"
    alt="PayPal - The safer, easier way to pay online!"></a>

编辑:

最后我们发现应该在没有扩展名的情况下映射servlet,并使用doGet方法从javascript获取请求。

答案 1 :(得分:1)

我可以在你的jsp中看到多个错误。

首先,

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">

并使用img标记button作为罗马说

在提交表单时调用action中的网址

所以尝试用,替换它,

<form action="./test-servlet" method="post">

现在使用您的JavaScript,

您无法使用window.location.href发出POST请求。检查pass post data with window.location.href

<script type="text/javascript">
    function callServlet() {
        document.forms[0].submit;
    }
</script>