응답방식이 json일 경우 1. contentType -> application/json 2. {"key" : "value"} or [{"key" : "value"}] 형태의 포맷방식 2-1. 이스케이프시퀀스를 활용 ->문자열 안에 쓰지 못하는 문자(ex. ")들은 앞에 \를 붙인다 3. 이스케이프시퀀스는 표현하기 힘들기 때문에 외부 api 활용 google의 Gson
실행화면
(요청페이지) jQuery 코드
$(function() {
var $ul01 = $('#ul01');
$('#ajaxSend').click(function() {
var request = $.ajax({
url: "json01.jsp",
method: "POST",
dataType: "json"
});
request.done(function( data ) {
for(var i=0; i<data.length; i++){
var
userName = data[i].userName,
userAge = data[i].userAge,
userAddr = data[i].userAddr,
html = '';
html += '<li>';
html += userName + '/' + userAge + '/' + userAddr;
html += '</li>';
$ul01.append(html);
}
});
request.fail(function( jqXHR, textStatus ) {
alert( "Request failed: " + textStatus );
});
});
});
<%@ page language="java" contentType="application/json; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="com.google.gson.Gson" %>
<%
String id = request.getParameter("userId");
int result = 0;
//db에 회원 아이디 저장되어 있다는 가정(id0~id99)
List<String> userId = new ArrayList<String>();
for(int i=0; i<100; i++){
userId.add("id"+i);
}
if(userId.contains(id))result++;
Map<String, Integer> map = new HashMap<String, Integer>();
//put -> 키와 값을 저장 할 수 있는 메서드
//get -> 키를 인수에 삽입하여 키에 연결된 값을 가지고 온다.
//map.get("result")
map.put("result", result);
Gson gson = new Gson();
out.println(gson.toJson(map));
%>
요청페이지 jquery
var $userIdSearch = $('#userIdSearch');
$('#userIdCheckBtn').click(function() {
var userIdSearch = $userIdSearch.val();
var request = $.ajax({
url: "idCheck.jsp",
method: "POST",
data: { userId : userIdSearch }, //응답페이지를 만들고 키와 값 설정
dataType: "json"
});
request.done(function(data){
if(data.result == 0){
console.log('사용 가능한 아이디 입니다.');
}else {
console.log('사용 불가능한 아이디 입니다.');
}
});
});
var $userId = $('#userId'),
$searchUserList = $('#searchUserList');
$('#userIdSearchBtn').click(function() {
var userId = $userId.val();
var request = $.ajax({
url: "userSearch.jsp",
method: "POST",
data: { userId : userId },
dataType: "json"
});
request.done(function(data){
var
userName = data.userName,
userAge = data.userAge,
userAddr = data.userAddr,
html = '';
if(userName != undefined){
html +='<tr>';
html +='<td>';
html += userName;
html +='</td>';
html +='<td>';
html += userAge;
html +='</td>';
html +='<td>';
html += userAddr;
html +='</td>';
html +='</tr>';
$searchUserList.append(html);
}
});
});
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String kgstr = request.getParameter("kg");
String cm = request.getParameter("cm");
double bmi=0, kg=0, m=0;
String result="";
if( kgstr.equals("") || cm.equals("")){
result="값을 입력해 주세요";
}else{
kg = Double.parseDouble(kgstr);
m = Double.parseDouble(cm);
m = m/100;
bmi = kg / (m*m);
if(bmi <= 18.5){
result = "저체중";
}else if(bmi>18.5 && bmi<= 23){
result = "정상";
}else if(bmi>23 && bmi<= 25){
result = "과체중";
}else if(bmi>25 && bmi<= 30){
result = "비만";
}else{
result="고도비만";
}
}
out.println(result);
%>
요청페이지 jquery
var
$kg = $('#kg'),
$cm = $('#cm'),
$bmiPrint = $('#bmiPrint');
$('#bmiBtn').click(function() {
var
kg = $kg.val(),
cm = $cm.val();
var request = $.ajax({
url: "bmi.jsp",
method: "POST",
data: { kg : kg, cm : cm },
dataType: "html"
});
request.done(function(data){
console.log(data);
$bmiPrint.html(data);
});
});
몸무게 50, 키150 입력후 결과확인 버튼 눌렀을 때 결과
1. datatype이 html이면 text도 다 가져온다고 해서 contentType이랑 신경 안썼는데 text값을 가져오고 싶으면 text/plain으로 변경해줘야함 근데 굳이 안바꿔도 잘 가져오긴함 2. 또 구글에 문자열 int 형변환 검색함... 진짜 날잡고 valueOf, parseInt 개념 확실하게 잡아야할듯... 3. 처음에 풀기는 빨리 풀었는데 null값 체크하는게 까다로웠다.. 실제 업무에서는 요청페이지에서의 유효성 검사와, 응답페이지의 예외처리 이중체크를 해줘야한다고 한다...