실시간 뉴스 (이미지)

2020. 8. 18. 16:08·개발중/JavaScript
728x90
반응형

실시간 뉴스 처럼 일정 시간동안 화면에 보여주는 프로그램을 해석하기.

 

이미지 뿌리기

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title></title>
	<style>
		table {
			font-size:20pt;
		    font-weight: bold;
			height: 100px;
			width: 950px;
			text-align: center;
			color: blue;
		}
	</style>


<script>
  window.onload = function () {
		setInterval(function(){
			var xhr = new XMLHttpRequest();
			xhr.onload=function(){
				if(xhr.status==200){
					var str=xhr.responseText;
					var obj=JSON.parse(str);
					var idx = Math.round(Math.random()*6);
					var target=document.getElementById("msg");
                    target.innerHTML="<img src='images/pic_"+idx+".jpg' />";
				}
			};

			xhr.open('GET', 'newsjson.json', true);
			xhr.send();
		  }, 1500);
  };
</script>
</head>
<body>
	<h2>  그림표시 실시간으로 뿌리기 Ajax 통신  </h2>
	<table border="1" cellspacing="0">
		<tr>
			<th> <font color=red> 이미지 </font></th>
		</tr>
		<tr>
			<td id="msg" height=100>잠시 기다리세요.........................</td>
		</tr>
	</table>
</body>
</html>

 

newsjson.json

{"news" :
[
  { "title" : "SW융합클러스터, 지방 SW교육 지원…SW교육격차 해소 첨병" },
  { "title" : "메모리에 강한 한국, SW정의 구현 최적지" },
  { "title" : "코로나19 바이러스 예방수칙 철저히 준수" },
  { "title" : "'게임대상' 배틀그라운드 '더게임어워드'까지 거머쥐다" },
  { "title" : "페이스북, 2019년부터 우리 정부에 세금낸다...애플, 구글, 아마존은?" },
  { "title" : "여성 쇼핑몰만 모아서 보여주는 쇼핑앱 '쇼즐' iOS 버전 출시" },
  { "title" : "드론 뜨자 '조종 교관' 새 일자리로 뜬다" },
  { "title" : "KAIST·서울대, 메탄올 생산하는 로듐 단일 원자 촉매 개발" }
]
}

 


[ 해 석 ]

 

<script>
  window.onload = function () {
      setInterval(function(){
         var xhr = new XMLHttpRequest();
         
         xhr.onload=function(){
            if(xhr.status==200){ //이건 없어도 됌
               var str=xhr.responseText;
               var obj=JSON.parse(str);
               var idx = Math.round(Math.random()*6);
               var target=document.getElementById("msg");
                    target.innerHTML="<img src='images/pic_"+idx+".jpg' />";
            }
         };

         xhr.open('GET', 'newsjson.json', true);
         xhr.send();
        }, 1500); //1.5초
  };
</script>

window.onload 란? 웹 브라우저를 담당하는 window 라는 객체가, 웹 문서를 불러올 때 문서가 사용되는 시점에 실행되는 onload 라는 함수를 내가 다시 재정의 한다. 라는 개념

 

 

 

 

 

 

 

setinterval 란?  일정한 시간 간격으로 작업을 수행하기 위해서 사용한다. clearlnterval 함수를 사용하여서 중지 할 수도 있다.

 

 

 

 

 

 

 

 

 

XELHttpRequest 객체는 서버와 상호작용 하기 위해서 사용된다. 전체 페이지의 새로고침 없이 URL으로 부터 데이터를 받아 올 수 있다. 이는 웹 페이지가 사용자가 하고 있는 것을 방해하지 않으면서 페이지의 일부를 업데이트 할 수 있도록 해준다. (AJAX 프로그래밍에 주로 이용된다)

그리고 모든 종류의 데이터를 받아오는데 사용이 가능하다.

 

 

 

XELHttpRequest.onload 객체를 생성하고 시작 할 때 실행해라? 롸 ???

 

onload ? 문서의 모든 콘텐츠가 로드된 후 발생하는 이벤트이다.

 

이 부분이 이해가 안가는데 onload 동일한 문서에서는 오직 하나만 존재해야 한다던데 두개 면 마지막 선언이 시작된다며, 롸?

 

 

status 가 200 이라는 뜻은 정상

 

 

 

 

 

 

 

 

 

 

responseText ? 이 프로퍼티는 서버에 요청하여 응답으로 받은 데이터는 문자열로 반환한다.

 

 

 

 

 

 

 

 

JSON.parse ? JSON 문자열의 구문을 분석하고, 그 결과에서 JS 값이나 객체를 생성한다.

const json = '{"result":true, "count":42}';
const obj = JSON.parse(json);

console.log(obj.count)
// 42
console.log(obj.result)
// true

 

이런 예제를 발견했는데 와 이렇게 쓰는거구나!

그럼 지금 str의 값을 가져오겠다는거겠구나 

 

이 난수를 발생하는 데 이 난수들은 

단순히 이미지를 가져오기 위함이다.

난수를 생성해서 랜덤으로 보여주기 위해서

난수를 idx에 담아두고

 

 

 

 

 

 

파일명을 이렇게 저장해 두자.

images 폴더에!

 

 

 

getElementById ? 함수 뜻 그대로 

 

get 가져오다

Element 요소

ById id로 부터

 

-> 난 meg 객체에 접근할꺼야

 

 

 

 

 

 

 

 

 

 

 

 난수로 생성한 값을 같이 대입 시켜주고

그에 맞는 이미지를 innerHTML 을 사용해서 보여주자

 

 

 

 

 

 

 

 

newsjson.json 문서를 get 해서 준비해

 

 

 

 

 

 

 

 

 

그리고 send 보내 => 실행해!

 

 

 

 

 

 

 

 

 

 

1500 = 1.5초

 

1.5초 마다 실행할 것

 

 

 

 

 

 

 

 

 

역시 코드는 하나하나 짚어보고 찾아보고 기록해야 내 머릿속에 남는 듯

이거는 우리 프로젝트 할 때 메인 화면에 적용할테다

728x90
반응형

'개발중 > JavaScript' 카테고리의 다른 글

이미지 보여주기 출력 (랜덤, 고정, 중지)  (0) 2020.08.24
실시간 뉴스( 텍스트 )  (0) 2020.08.18
AJAX 응용  (0) 2020.08.14
AJAX 의 이해  (0) 2020.08.13
ER 방식으로 IF 문(SELECT)  (0) 2020.08.12
'개발중/JavaScript' 카테고리의 다른 글
  • 이미지 보여주기 출력 (랜덤, 고정, 중지)
  • 실시간 뉴스( 텍스트 )
  • AJAX 응용
  • AJAX 의 이해
Binsoo
Binsoo
내 트러블 슈팅
  • Binsoo
    정수빈 기술블로그임.
    Binsoo
  • 전체
    오늘
    어제
    • 빈수 개발자 개발 일기 (948)
      • 개발중 (635)
        • Spring Boot (95)
        • Spring Security (2)
        • Spring Batch (6)
        • Spring Boot & Redis (13)
        • Java Persistence API (JPA) (28)
        • Web (42)
        • Rest Api (7)
        • Spring Concurrency Control (3)
        • Redis (8)
        • Kubernetes (k8s) (4)
        • MYSQL (35)
        • AirFlow (15)
        • Docker (2)
        • Git (22)
        • Linux (9)
        • JSON Web Tokens (JWT) (4)
        • Troubleshooting (88)
        • Swagger (0)
        • Vue.js (52)
        • Java (74)
        • html (12)
        • C (5)
        • jQuery (15)
        • JavaServer Pages (JSP) (17)
        • Arduino (1)
        • JavaScript (35)
        • Amazon Web Services (AWS) (11)
        • Algorithm (9)
        • 참고 기능 (18)
        • mongo (2)
      • PROJECT (27)
        • 스프링부트+JPA+몽고 API 개발 (3)
        • MINI (2)
        • 게시판 (3)
        • vue 프로젝트 (1)
        • JPA 사이드 프로젝트 기록 (17)
      • TEAM STUDY (156)
        • 가상 면접 사례로 배우는 대규모 시스템 설계 기초 (8)
        • 한 권으로 읽는 컴퓨터 구조와 프로그래밍 (12)
        • NAVER DEVELOPER (4)
        • LINUX (23)
        • PYTHON (19)
        • SERVER (8)
        • 알고리즘 코딩 테스트 스터디 (31)
        • 쿠버네티스 (40)
        • 대세는 쿠버네티스 [초급~중급] (11)
      • BOOK (0)
      • 자격증 (61)
        • 리눅스 1급 - 필기 기록 (19)
        • 네트워크 관리사 (2)
        • 네트워크 관리사 2급 - 실기 기록 (21)
        • 네트워크 관리사 2급 - 필기 기록 (16)
        • 정보처리 (2)
      • 직장인 대학원 (27)
        • 기록 (3)
        • 캐글 스터디 (3)
        • R (12)
        • MLOps (9)
      • 논문 (5)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    알고리즘
    Spring
    리눅스 마스터
    쿠버네티스
    git
    파이썬
    리눅스 1급 요약
    java
    Git 저장소
    jpa
    네트워크 관리사 2급 실기
    docker
    REST API
    네트워크 관리사 요약
    네트워크 관리사 자격증
    springboot
    VUE
    리눅스 마스터 1급 정리
    리눅스 마스터 요약
    네트워크 관리사
    리눅스 마스터 1급
    BackendDevelopment
    redis
    스프링
    쿠버네티스 스터디
    파이썬 알고리즘
    네트워크 관리사 학점
    네트워크 관리사 2급
    리눅스 마스터 1급 요약
    네트워크 관리사 실기
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
Binsoo
실시간 뉴스 (이미지)
상단으로

티스토리툴바