ajax 사용, json정보 가져오기
웹/프론트엔드

ajax 사용, json정보 가져오기

실행화면

전체 코드

<!DOCTYPE html>
<html lang="en">
<head>
<title>상영시간 워크샵</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet"
	href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<script
	src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script
	src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<script
	src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
	<style type="text/css">
		.head-content{
			margin-left: 30px;
		}
		video{
			width: 300px;
			height: 300px;
		}
		.movie-img{		
			margin-bottom: 10px;
		}
		.movie-img > img{
			width : 300px;
			height: 300px;
		}
	</style>
</head>
<script type="text/javascript">
	$(document).ready(function(){
		var movieUrl='';
		$('.show').click(function(){
			movieUrl = $(this).val();
			console.log(movieUrl);
			$.ajax({			
				url: movieUrl+".json",  
	 			type:"GET",
	 			contentType:'application/json;charset=utf-8',
				dataType:'json',
	 			success:function(response) {
	 				showList(response);
	 			},
	 			error:function(xhr,status,msg){
	 				console.log("상태값 : " + status + " Http에러메시지 : "+msg);
	 			}
	 		});
		});
		function showList(data){
			var timeList = '';
			$(".modal-body").empty();
			var head = '<span>'+movieUrl+'</span>';
			$(".modal-body").append(head);
			$.each(data, function(index, item){
				timeList = '<tr>';
				timeList += '<td>' + item.idx + '</td>';
				timeList += '<td>' + item.time + '</td>';
				timeList += '</tr>';
				$(".modal-body").append(timeList);
			})
		}
	});
</script>
<body>
	<!-- 네브바 -->
	<nav class="navbar navbar-expand-sm bg-dark navbar-dark">
		<!-- Brand/logo -->
		<a class="navbar-brand" href="#">Cinema</a>
		<!-- Links -->
		<ul class="navbar-nav ">
			<li class="nav-item"><a class="nav-link" href="#">최신영화소개</a></li>
			<li class="nav-item"><a class="nav-link" href="#">영화관찾기</a></li>
			<li class="nav-item"><a class="nav-link" href="#">로그인</a></li>
			<li class="nav-item"><a class="nav-link" href="#">회원가입</a></li>
		</ul>
	</nav>
	<!-- 점보트론 -->
	<div class="jumbotron jumbotron-fluid">
		<div class="head-content">
			<h1>힐링 시네마</h1>
			<p>힐링 시네마는 새로운 개념의 영화장르의 한가지를 말하는 것입니다. 지친 영혼을 위한 휴식을~~~~~</p>
		</div>
	</div>
	<!-- 영화리스트 -->
	<div class="row">
	  <div class="col-sm-3">
	  	<video src="media/KungFuPanda_Sample.mp4" controls="controls"></video>
	  </div>
	  <div class="col-sm-3">
	  	<div class="movie-img">
	  		<img alt="쿵팬 이미지" src="img/movie_image2.jpg">
	  	</div>
	  	<button type="button" class="btn btn-primary">예고편 보기</button>
	  	<button type="button" class="btn btn-danger show" data-toggle="modal" data-target="#myModal" value="panda">상영시간 보기</button>
	  </div>
	  <div class="col-sm-3">
		<div class="movie-img">
	  		<img alt="어벤져스" src="img/TheAvengers2012Poster.jpg">
	  	</div>
	  	<button type="button" class="btn btn-primary">예고편 보기</button>
	  	<button type="button" class="btn btn-danger show" data-toggle="modal" data-target="#myModal" value="aven">상영시간 보기</button>
	  </div>
	  <div class="col-sm-3">
	  	<div class="movie-img">
	  		<img alt="iron" src="img/ironMan.png">
	  	</div>
	  	<button type="button" class="btn btn-primary">예고편 보기</button>
	  	<button type="button" class="btn btn-danger show" data-toggle="modal" data-target="#myModal" value="iron">상영시간 보기</button>
	  </div>
	</div>

	<!-- 모달창 -->
	<div class="modal fade" id="myModal">
		<div class="modal-dialog">
			<div class="modal-content">

				<!-- Modal Header -->
				<div class="modal-header">
					<h4 class="modal-title">상영시간보기</h4>
					<button type="button" class="close" data-dismiss="modal">&times;</button>
				</div>

				<!-- Modal body -->
				<div class="modal-body">
					
				</div>

				<!-- Modal footer -->
				<div class="modal-footer">
					<button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
				</div>
				
			</div>
		</div>
	</div>
</body>
</html>

json 코드

[
 {
 	"idx" : "1회",
 	"time" : "9:00 ~ 11:00"
 },
 {
 	"idx" : "2회",
 	"time" : "12:00 ~ 14:00"
 },
 {
 	"idx" : "3회",
 	"time" : "14:00 ~ 16:00"
 }
]

 

코드분석

- ajax를 사용해서 빨간버튼 클릭 시, 정보를 가져왔습니다.

가져온 데이터를 append함수를 사용해서 모달창에 넣어주었습니다.

<script type="text/javascript">
	$(document).ready(function(){
		var movieUrl='';
		$('.show').click(function(){
			movieUrl = $(this).val();
			console.log(movieUrl);
			$.ajax({			
				url: movieUrl+".json",  
	 			type:"GET",
	 			contentType:'application/json;charset=utf-8',
				dataType:'json',
	 			success:function(response) {
	 				showList(response);
	 			},
	 			error:function(xhr,status,msg){
	 				console.log("상태값 : " + status + " Http에러메시지 : "+msg);
	 			}
	 		});
		});
		function showList(data){
			var timeList = '';
			$(".modal-body").empty();
			var head = '<span>'+movieUrl+'</span>';
			$(".modal-body").append(head);
			$.each(data, function(index, item){
				timeList = '<tr>';
				timeList += '<td>' + item.idx + '</td>';
				timeList += '<td>' + item.time + '</td>';
				timeList += '</tr>';
				$(".modal-body").append(timeList);
			})
		}
	});
</script>

 

모달창 실행 버튼, 모달창에 어떤 json 정보인지 써주기 위해 value속성에 aven이라는 값을 넣었습니다.

<button type="button" class="btn btn-danger show" 
data-toggle="modal" data-target="#myModal" value="aven">상영시간 보기</button>