본문 바로가기

[Ajax] Ajax 적용하기 - jQuery.get()/post() : GET/POST방식

인포꿀팁 발행일 : 2020-12-07

ex.jsp => 사용자 요청 페이지

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page trimDirectiveWhitespaces="true" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="${pageContext.request.contextPath}/resources/jquery/js/jquery.min.js">
</script>
<script type="text/javascript">
$(function(){
    $('#btnSend').click(function(){
        var url;
        var n1=$("#num1").val();
        var n2=$("#num2").val();
        var o=encodeURIComponent($("#oper").val());
        
        url="ex2_ok.jsp";
        /*
            -$.get(), $.post(), $.ajax() 함수를 이용하여 파라미터를 전송할시 주의사항
            파라미터를 {이름:값 , 이름:값} 형식으로 보내면서
            값을 encodeURIComponent() 해서 보내면
            서버측에서는 반드시 URLDecoder.decode()로 디코딩해야한다.
            
            -$.ajax() 에서 값을
                이름1=값&이름2=값 으로 전송하면서 값을 encodeURIComponent() 해서 보내면
                서버측에서는 반드시 URLDecoder.decode()로 디코딩하지 않는다.
        */
        //AJAX-GET 방식 // {서버가 받는 이름 : 보내는 값}
        $.get(url, {num1:n1, num2:n2, oper:o}, function(data){
            $("#resultLayout").html(data);
        });
    });
});
</script>
</head>
<body>
 
<h3>AJAX-jQuery.get() : GET 방식</h3>
<form name="myForm">
 
<p>
    <input type="text" name="num1" id="num1">
    <select name="oper" id="oper">
        <option value="+">더하기</option>
        <option value="-">빼기</option>
        <option value="*">곱하기</option>
        <option value="/">나누기</option>
    </select>
    <input type="text" name="num2" id="num2">
    <button type="button" id="btnSend"> = </button>
</p>
 
</form>
 
<hr>
 
<div id="resultLayout"></div>
 
</body>
</html>
cs

ex_ok.jsp => 결과 처리 페이지

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<%@page import="java.net.URLDecoder"%>
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page trimDirectiveWhitespaces="true" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%
    request.setCharacterEncoding("utf-8");
    int num1 = Integer.parseInt(request.getParameter("num1"));
    int num2 = Integer.parseInt(request.getParameter("num2"));
    String oper = request.getParameter("oper");
    oper = URLDecoder.decode(oper, "utf-8");
    String result="";
    
    switch(oper){
    case "+" : result=String.format("%d+%d=%d", num1,num2, num1+num2); break;
    case "-" : result=String.format("%d-%d=%d", num1,num2, num1-num2); break;
    case "*" : result=String.format("%d*%d=%d", num1,num2, num1*num2); break;
    case "/" : result=String.format("%d/%d=%d", num1,num2, num1/num2); break;
    }
%>
<%=result %>
 
 
cs

$.get(), $.post(), $.ajax() 함수를 이용하여 파라미터를 전송할시 주의사항

  • 파라미터를 {이름:값 , 이름:값} 형식으로 보내면서 값을 encodeURIComponent() 해서 보내면 서버측에서는 반드시 URLDecoder.decode() 로 디코딩해야한다.
  • $.ajax() 에서 값을 이름1=값&이름2=값 으로 전송하면서 값을 encodeURIComponent() 해서 보내면 서버측에서는 반드시 URLDecoder.decode()로 디코딩하지 않는다.

1)사용자 요청 받기

넘어온 값들을 변수에 각각 저장하고 문자열은  encodeURIComponent()를 해서 전송한다.

1
2
3
4
5
6
7
    $('#btnSend').click(function(){
        var url;
        var n1=$("#num1").val();
        var n2=$("#num2").val();
        var o=encodeURIComponent($("#oper").val());
        
        url="ex2_ok.jsp";
cs

 

2) 결과 처리

넘어온 데이터는 URLDecoder.decode() 를 통해 디코딩 하여 사용한다.

1
2
3
4
5
6
    request.setCharacterEncoding("utf-8");
    int num1 = Integer.parseInt(request.getParameter("num1"));
    int num2 = Integer.parseInt(request.getParameter("num2"));
    String oper = request.getParameter("oper");
    oper = URLDecoder.decode(oper, "utf-8");
    String result="";
cs

 

3) jQuery.get() 통해 출력

get(url, {이름:값} , 결과페이지 출력 함수)

1
2
3
        $.get(url, {num1:n1, num2:n2, oper:o}, function(data){
            $("#resultLayout").html(data);
        });
cs

 

댓글