簡體   English   中英

如何在javascript中從servlet傳遞值

[英]how to pass a value from servlet in javascript

我是 servlets 和所有這個主題的新手,如果它有點亂,我很抱歉! 我正在嘗試將值從 servlet 發送到 javascript 或在 java 腳本中獲取 servlet 方法的值。 我不確定doGet 我做得對嗎? 獲取字段的值並將結果發送到javascript

小服務程序:

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();

    try {
        String passengerCount = request.getParameter("passengerCount");
        String departureSchedule = request.getParameter("schedule");
        String arrivalSchedule = request.getParameter("returnschedule");
        HttpSession session = request.getSession(true);
        int departureSID = 0;
        int passengerCountInt = 0;
        userID = 0;
        int arrivalSID = 0;

        try {
            departureSID = Integer.parseInt(departureSchedule);
            passengerCountInt = Integer.parseInt(passengerCount);
            userID = Integer.parseInt(session.getAttribute("userID").toString());
            arrivalSID = Integer.parseInt(arrivalSchedule);
        } catch (Exception e) {
        }

        if (departureSID != 0) {
            ScheduleBean departureSb = new ScheduleBean();
            departureSb.selectSchedule(departureSID);
            int departureRoute = departureSb.getRouteID();
            RouteBean routeB1 = new RouteBean();
            routeB1.selectRoute(departureRoute);
            double routeCharge = routeB1.getCharge();
            double totalDCharge = routeCharge * passengerCountInt;
            ReservationBean rb = new ReservationBean();
            UserBean us = new UserBean();

            if (arrivalSchedule == null) {
                rb.saveOneWayReservation(departureSID, userID, totalDCharge, passengerCountInt, "TICKET");
            } else {
                departureSb.selectSchedule(arrivalSID);
                int arrivalRoute = departureSb.getRouteID();
                routeB1.selectRoute(arrivalRoute);
                double arrivalRouteCharge = routeB1.getCharge();
                totalDCharge += arrivalRouteCharge * passengerCountInt;
                rb.saveRoundReservation(departureSID, arrivalSID, userID, totalDCharge, passengerCountInt, "TICKET");
            }

            ScheduleBean sbb = new ScheduleBean();
            sbb.selectSchedule(rb.scheduleID);
            AirBean bbb = new AirBean();
            bbb.selectAir(sbb.getAirID());
            String AirCode = bbb.getAirCode();
            String username = session.getAttribute("username").toString();
            int referenceNumber = rb.reservationID + 100;

            rb.updateTicketNumber(AirCode + "-" + username + "-" + String.valueOf(referenceNumber));
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Make payment</title>");
            out.println("<script type='text/javascript' src='js/jquery-1.5.2.min.js'></script>");
            out.println("<script type='text/javascript' src='js/payment.js'></script>");
            out.println("<script src='http://code.jquery.com/jquery-latest.min.js'></script>");
            out.println("<link type='text/css' href='css/style.css' rel='Stylesheet' />");
            out.println("</head>");
            out.println("<body>");
            out.println("<div class='bg-light' style='width: 200px; height: 200px; position: absolute; left:50%; top:50%;  margin:-100px 0 0 -100px; padding-top: 40px; padding-left: 10px;'>");
            out.println("<input id='reservationID' style='display: none' value='" + rb.reservationID + "' />");
            out.println("<div>Credit Card Number : </div>");
            out.println("<div><input id='creditcard' onKeyPress='return checkIt(event);' type='text' name='creditcard' maxlength='16' /></div>");
            out.println("<div>ExpirationDate : </div>");
            out.println("<div><input id='expirationDate' type='text' onKeyPress='return checkIt(event);' name='expirationDate' maxlength='4' /></div>");
            out.println("<input type='hidden' id='FormName' name='FormName' value='" + HiddenValue + "'>");
            out.println("<div><input id='somebutton' type='button'  name='buttonsave' value='Make Payment' onclick='makePayment(" + rb.reservationID + ");' /></div>");
            out.println("<div><input type='button'  name='buttoncancel' value='Cancel Payment' onclick='cancelPayment(" + rb.reservationID + ");' /></div>");
            out.println("</div>");
            out.println("</body>");
            out.println("</html>");
        }
    } finally {
        out.close();
    }
}

我正在嘗試獲取兩個輸入字段的值,並將結果發送到 javascript

小服務程序 doGet:

    @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    processRequest(request, response);

    creditno = request.getParameter("creditcard");       //name of the input field, not id
    expiration = request.getParameter("expirationDate");     //name of the input field should be expirationDate
    UserBean us = new UserBean();
    boolean check = us.checkCC(userID, creditno, expiration); // process the fields 
    if (check == true) {
        CCA = "1";
    } else {
        CCA = "0";
    }

    response.setContentType("text/plain");  // Set content type of the response so that jQuery knows what it can expect.
    response.setCharacterEncoding("UTF-8"); // You want world domination, huh?
    response.getWriter().write(CCA);       // Write response body.

}

Servlet doPost:

protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    processRequest(request, response);
}

Javascript:

var tempresp;
$(document).ready(function() {                        // When the HTML DOM is ready loading, then execute the following function...
    $('#somebutton').click(function() {               // Locate HTML DOM element with ID "somebutton" and assign the following function to its "click" event...
        $.get('MakeReservation', function(responseText) { // Execute Ajax GET request on URL of "someservlet" and execute the following function with Ajax response text...
            alert(responseText);
            tempresp=responseText;
        });
    });
});

提前致謝!

你有你的java,它是request.getParameter(...)。 但是,您沒有使用 javascript 發送任何數據。 如果您想發送“GET”請求,請使用您擁有的代碼,但進行以下更改:

$.get('MakeReservation?creditcard=12345&expirationDate=11%2F14', ....);

我會查找一些關於使用 get 和 post 方法的 JQuery 教程。 此外,您可能想注釋掉您擁有的代碼,並在直接深入到 Java 方面之前測試發送一些變量以掌握事情的竅門。

您沒有向 Servlet 發送任何參數。 即使這樣做,您也會遇到IllegalStateException 這是因為您正在寫入響應正文,使用out.println() ,然后設置標題。 該聲明

finally {
        out.close();
 }

還刷新輸出流,防止您寫入任何響應標頭。

在寫入響應正文之前設置任何標頭並在$.get傳遞所需的參數

$.get('MakeReservation', {passengerCount: 2, arrivalSchedule: 123}, function(responseText) { // Execute Ajax GET request on URL of "someservlet" and execute the following function with Ajax response text...
          alert(responseText);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM