0

ページを更新またはリロードせずに、現在のページの URL をサーブレットに送信したい。ここにコードがあります-

<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>

私のサーブレットの名前は scriptservlet です。私を助けてください...

4

4 に答える 4

2

AJAX は、ブラウザーで現在のページを再読み込みしたり変更したりせずにサーバーと通信するために構築されました。サーバーへのAJAX呼び出しを作成し、現在のページに影響を与えることなく、必要なデータをサーバーに送信するだけでよいはずです。

通常の状況では、AJAX 呼び出しは「同じオリジン」に制限されています。つまり、現在の Web ページと同じドメインのサーバーとしか通信できないため、このセキュリティ制限を満たしていることも確認する必要があります。

于 2013-03-29T09:21:47.700 に答える
1

サーブレットに ajax 呼び出しを実行し、(request.getRequestUri()) を実行して現在のページの Url をサーブレットに渡します。

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) を送り返すことで可能になります。このように、リクエストが送信されても​​、ページは更新/再ロードされません。

于 2013-03-29T09:18:56.160 に答える