728x90
반응형
ajax
Asynchronous Javascript and XML
: 비동기적으로 데이터를 전송하고 받아오기 위해서 사용
특정요소에 데이터 불러와서 표시하기
${"요소"}.load();
ajax()
: http 프로토콜을 이용해서 데이터를 전송하고 데이터를 text나 json 형태로 받아오는 함수
$.ajax({
url :"전송 url",
type:"전송방식 [get|post]",
data:"전송할 데이터",
dataType:"요청 데이터 타입(html, text,json,xml)",
success:function(result){
//요청 성공시, 실행하는 함수
//결과를 파라미터로 받아올 수 있음
//이것을 적지 않으면 결과를 받아올 수 없음
},
error:fuction(){
//요청 실패시, 실행하는 함수
},
});
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
crossorigin="anonymous"></script>
<script type="text/javascript">
var name = "solvely";
function doAjax() {
$.ajax({
url:"hello",
data:{"name":name},
type:"post",
dataType : "json",
success:function(result){
alert(result.msg);
$("#title").text(result.msg);
},
error:function(request, status,error){
alert("request : "+request
+"status : "+status
+"error : "+error);
}
});
}
</script>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1 id="title"></h1>
<button onclick="doAjax()">요청</button>
</body>
</html>
![](https://blog.kakaocdn.net/dn/bOyXOA/btszLtAdoC6/JYB5sLIEEuOVRxEytpV6tk/img.png)
요청 버튼을 클릭하면 doAjax 함수가 실행되면서 ajax 안에 넣은 내용이 실행된다
ajax 내부에서 url을 hello로 설정했기 때문에, hello서블릿으로 요청이 넘어감!
@WebServlet("/hello")
public class helloServlet extends HttpServlet{
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
1) System.out.println("hello 요청 받음");
req.getRequestDispatcher("01ajaxEx.jsp").forward(req, resp);
2) String name = req.getParameter("name");
System.out.println("name : "+name);
resp.getWriter().print("Hello! Ajax!!");
3) String data= "{\"msg\":\"Hello! Ajax!!\"}";
resp.getWriter().print(data);
}
}
![]() |
![]() |
![]() |
json 형태로 넘겨야 alert 메시지도 정상적으로 출력된다
msg가 key 값이고, hello ajax 부분이 value 값이라고 적어뒀는데 역시 아직 어려움 ㅠ-ㅠ...
ajax 활용한 회원가입 체크.
아이디 사용 가능 여부와 이메일 사용 가능 여부를 확인하는 코드
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
crossorigin="anonymous"></script>
<script type="text/javascript">
$(function(){
$("#myForm").on("submit",function(){
var d = $(this).serialize();
$.ajax({
url:"form",
type:"get",
data:d,
success: function(){
}
});
return false; //submit 진행을 멈춤
});
$("#userid").on("blur",function(){
$.ajax({
url:"check",
type:"post",
data : {"userid":$(this).val()},
dataType:"json",
success: function(data){
if(data.result){
$("#idresult").text("사용 가능한 아이디입니다.");
}else{
$("#idresult").text("사용 중인 아이디입니다.");
}
}
});
});
});
</script>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="hello" id="myForm">
id : <input type="text" name="id" id="userid"><br>
<div><small><span id="idresult"></span></small></div>
name : <input type="text" name="name"> <br>
email : <input type="text" name="email"> <br>
<input type="submit" value="등록">
</form>
</body>
</html>
![]() |
![]() |
입력창에 사용자가 입력한 아이디가 사용 가능한 아이디인지 확인하는 코드!
form 요소 데이터를 전송하기 위해 ajax를 사용한다!
![](https://blog.kakaocdn.net/dn/di0xyB/btszKxp0WyT/49qlQJuHM3DCefZF48FNyK/img.png)
데이터 값을 넘기기 위해 id를 각각 가지고 있어야 하고,
submit 이벤트 발생하면 ajax가 데이터 전송하는 코드이다
.serialize()는 준 URL 인코딩 표기법으로 텍스트 문자열을 만들어준다
한마디로 form의 데이터를 전송 가능한 형태로 만들어준다는 뜻!
![]() |
![]() |
return false가 없으면, 등록 버튼을 누르는 순간 입력한 데이터가 사라지고 새로운 페이지가 로딩됨
ajax 화면을 그려내고 나중에 내용 포함시키는 예제
반응형
'JavaScript' 카테고리의 다른 글
[JQuery] 기초 문법 - 선택자 사용 (0) | 2023.11.06 |
---|---|
[JavaScript] 자바스크립트 Spread Operator (... 문법, ...의미) (0) | 2023.02.24 |
[JavaScript] Tagged Literals로 문자열 위치 바꾸고 변수 제거하기 (0) | 2023.02.01 |
[JavaScript] 자바스크립트 Template literals로 변수 포함한 html append 쉽게하기 (0) | 2023.01.31 |
[JavaScript] 변수 Hoisting, 전역변수, 참조 (0) | 2023.01.30 |
댓글