0

我想在不刷新或重新加载页面的情况下将当前页面的 url 发送到 servlet。这是代码-

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Action Onclick </title>

    <!--        <script>
                $('#contactForm').submit(function () {
                    alert('sdafjb');
                    return false;
                });            
            </script>-->
</head>
<body>

    <form id="contactForm" >
        <fieldset>
            <label for="Name">Name</label>
            <input id="contactName" type="text" />
        </fieldset>

        <fieldset>
            <label for="Email">Email</label>
            <input id="contactEmail" type="text" />
        </fieldset>

        <fieldset class="noHeight">
            <textarea id="contactMessage" cols="20"></textarea>


            <a href="#" onclick="document.getElementById('contactForm').submit();"> submit </a>
        </fieldset>

    </form>        
    <small id="messageSent">Your message has been sent.</small>

</body>

我的 servlet 的名称是 scriptservlet。请帮我...

4

4 回答 4

2

AJAX 是为与服务器通信而构建的,而无需重新加载或更改浏览器中的当前页面。您应该能够创建一个对您的服务器的 AJAX 调用并向您的服务器发送您想要的任何数据,而不会影响当前页面。

在正常情况下,AJAX 调用仅限于“同源”,这意味着您只能与与当前网页位于同一域的服务器进行通信,因此您还必须确保满足此安全限制。

于 2013-03-29T09:21:47.700 回答
1

对 servlet 进行 ajax 调用,并通过 (request.getRequestUri()) 将当前页面的 Url 传递给 servlet。

var requestUri = '<% request.getRequestUri()%>';
var hostname = location.host;

$.ajax({
  type: "POST",
  url: "/scriptServlet",
  data: { "host": hostname, "uri": requestUri  }
  }).done(function( msg ) {
  alert( "Data Saved: " + msg );
 });

请注意,语法可能不正确,但您必须进行 ajax 调用才能获得结果。

于 2013-03-29T09:25:29.217 回答
0

您可以在表单中使用隐藏字段。

<input type="hidden" name="currentPage" value="<%=request.getRequestURL()%>">
于 2013-03-29T16:18:42.407 回答
0

这可以通过将适当的响应代码(我猜是 204)从服务器(servlet)发送回客户端来实现。这样,即使提交了请求,页面也不会刷新/重新加载。

于 2013-03-29T09:18:56.160 回答