从JavaScript调用Servlet
我打算在JavaScript中调用一个函数,该函数在单击从JavaScript调用Servlet,java,javascript,jsp,servlets,Java,Javascript,Jsp,Servlets,我打算在JavaScript中调用一个函数,该函数在单击后调用Servlet JSP: <head> <script type="text/javascript"> function callServlet() { document.location.href="test-servlet.jsp"; } </script> </head> <body> &
后调用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>
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-jsp
但是,当我单击图像按钮时,什么也没有发生。我是JavaScript新手。试试这段代码
<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获取请求。我可以在jsp中看到多个错误
首先,
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
现在使用JavaScript
您不能使用window.location.href
发出POST
请求。检查
函数callServlet(){
document.forms[0]。提交;
}
您可以使用jquery而不是javascript。是否有任何特定要求限制您仅使用javascript?@Rockstar jQuery对以下问题有何帮助:)?你的意图是什么?表单正在PayPal上提交,当单击提交时,您试图修改位置(竞争条件)。更改位置也会生成GET请求,但您的servlet正在处理POST。。。因此,您所展示的代码存在多个问题。那么为什么不@PavelHoral?。我想OP想要在单击时进行servlet调用。如果我以错误的方式进行了调用,我很抱歉。可能是我对OP的意图理解不足。我猜他是想访问urltestservlet
而不是动作中的那个attribute@SanKrish他想要一个图像按钮转到jsp页面,但他的标题建议从JavaScript调用Servlet:(@RomanC下一行我是JavaScript新手。即使是它也不会接受post请求,因为它试图在post中传递请求。您应该映射一个servlet,不带扩展,并使用doGet
方法。您好,https://www.sandbox.paypal.com/cgi-bin/webscr
重定向到所需的PayPal沙箱站点。我想注册的原因是l另一个测试servlet用于设置布尔值isPaypalButtonClicked
。这可能吗?因此您希望它保持在同一页面上?如果是这样,请使用ajax为您完成工作。遗憾的是,我们目前还不允许接触ajax。允许使用jQuery和JS(但最低限度)。因此,您可以调用servlet,将值设置为请求,然后重新定向回jsp。
<form action="./test-servlet" method="post">
<script type="text/javascript">
function callServlet() {
document.forms[0].submit;
}
</script>