0

サーブレットに ajax 呼び出しを行い、応答を出力したいと考えています。index.htmlAssignemntサーブレット、および次のように記述web.xmlしましたが、アラートが表示されません。何がうまくいかないのですか?

index.html

<!DOCTYPE html>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js">
    <script>
    $(document).ready(function() {
        $("button").click(function() {
            $.get("Assignment", function(data, status) {
                alert("Data: " + data + "\nStatus: " + status);
            });
        });
    });
</script>

<title>Insert title here</title>
</head>
<body>
    <form method="GET" action="Assignment" name="showall">
        <table>
            <tr>
                <td><input type="checkbox" name="id1" /></td>
                <td>Jim</td>
                <td>Knopf</td>
            </tr>
            <tr>
                <td><input type="checkbox" name="id2" /></td>
                <td>Jim</td>
                <td>Bean</td>
            </tr>
        </table>



        <p>
            <button>Send an HTTP GET request to a page and get the
                result back</button>
        </p>
    </form>
</body>
</html>

サーブレット:

protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        System.err.println("-------++++");
        String data = "Hello World!";
        response.setContentType("text/plain");
        response.setCharacterEncoding("UTF-8");
        response.getWriter().write(data);
        //RequestDispatcher rd = request.getRequestDispatcher("/Assignment");
        RequestDispatcher rd = request.getRequestDispatcher("/index.html");
        rd.forward(request, response);

    }

サーブレット マッピング:

 <servlet>
    <description>FirstAssignment</description>
    <display-name>Assignment</display-name>
    <servlet-name>Assignment</servlet-name>
    <servlet-class>com.Assignment</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Assignment</servlet-name>
    <url-pattern>/Assignment</url-pattern>
  </servlet-mapping>
4

1 に答える 1

4

応答を転送する必要はまったくありません。text/plain応答を上書きします。それらの行を削除します。

//RequestDispatcher rd = request.getRequestDispatcher("/Assignment");
RequestDispatcher rd = request.getRequestDispatcher("/index.html");
rd.forward(request, response);

参照:


具体的な問題とは関係なく、w3schoolsのチュートリアル巨大な塩の袋を使って行う必要があります。たとえば、$("button")セレクターは非常に悪いアドバイスです。これは、HTMLドキュメント全体のすべての <button>要素に影響しますが、ajax関数を特定のIDで識別される1つの特定のボタンにのみバインドする必要があるためです。

于 2012-12-28T16:53:41.700 に答える