-
html 에서 html 로 데이터 보내기 with 바닐라 자바스크립트자바스크립트 끄적끄적 2023. 12. 8. 15:24728x90
# 리액트나 뷰 이런 프레임워크에서는 props로 데이터를 간단하게 보낸다. 그런데 문득 그러한 프레임워크를 쓰지 않고, 어떤 식으로 데이터를 보낼지가 궁금하다. 또한 가끔 일을 하다 보면 그러한 코드를 마주할 때가 있다. 그런 상황에서 좀 더 쉽게 어려움을 해결하고자 이 글을 정리한다.
## 들어가기에 앞서
우선 로컬스토리지, 세션, 쿠키로 저장해서 가져다 쓰는 방법은 언급하지 않겠다. 또한 서버가 있다고 가정하고 서버에 데이터를 보내고 받아오는 형식도 고려하지 않겠다. 단순히 두 html 간에 데이터를 간단하게 전송하고자할 때의 상황을 고려하겠다.
#### 보내는 페이지: pageA.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Page A</title> </head><!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Page A</title> </head> <body> <button id="sendButton">Send Message from Page A</button> <script> // 보낼 데이터 const data = 'To pageB.html. sending the Data from A'; const sendDataToB = document.querySelector('#sendButton'); sendDataToB.addEventListener('click', () => { // 데이터를 encodeURIComponent 함수를 사용하여 인코딩 const encodedData = encodeURIComponent(data); // loaction.href = callBackUrl + '?param1=1¶m2=2' location.href = `pageB.html?param1=${encodedData}`; }); </script> </body> </html>
##### 설명
간단한 코드이다. sendButton을 id로 가진 데이터를 보내면 data로 정의된 값을 보낸다. 그리고 그 값의 키는 param1로 보내는 것. 무엇을 이용해서? location.href를 이용해서
- location.href 란?
href 는 location 객체에 속해있는 프로퍼티로 현재 접속중인 페이지 정보를 갖고 있습니다.
또한 값을 변경할 수 있는 프로퍼티이기 때문에 다른 페이지로 이동하는데도 사용되고 있습니다.
- 자바스크립트 location.href 로 현재페이지 확인 방법
location.href;
- 자바스크립트 location.href 로 페이지 이동 방법
#### 받는 페이지: pageB.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Page B</title> </head> <body> <h1>Page B</h1> <p id="receivedData"></p> <script> // 현재 URL에서 쿼리 매개변수를 가져옴 const urlParams = new URLSearchParams(window.location.search); // 쿼리 매개변수 중 'data' 값을 가져옴 const encodedData = urlParams.get('param1'); // 디코딩된 값을 출력 const decodedData = decodeURIComponent(encodedData); // 받은 데이터를 페이지에 표시 const receivedDataElement = document.getElementById('receivedData'); receivedDataElement.textContent = `Received Data in Page B: ${decodedData}`; </script> </body> </html>
##### 설명
window.location.search
'?' 뒤의 쿼리스트링을 가져옵니다.
const urlParams = new URLSearchParams(window.location.search); // 쿼리 스트링을 가져온다.const encodedData = urlParams.get('param1'); // key값 param1 기준으로 데이터를 가져온다.그다음 데이터를 쓰는 동작.#### 동작 모습
후기
찾아보면서 여러 방법으로 데이터를 보낼 수 있지만 간단하게 보낼 때 이 방법이 제일 깔끔한거 같다. 이정도만 알고 가도 바닐라자바스크립트로 구현할일 생기고, 데이터를 전송하려고 할 때 어려움이 다소 덜하지 않을까 생각한다.##### 추가: window.location 관련 매서드
window.location.href
전체 URL 문자열을 가져옵니다.
window.location.protocol
마지막 ':'를 포함한 프로토콜 정보를 가져옵니다.
window.location.host
URL의 호스트 정보를 가져옵니다.
위 예제는 포트번호가 없지만, 만약 URL에 포트번호가 있으면 ':'과 포트번호를 포함합니다.
window.location.hostname
URL의 호스트명을 가져옵니다.
이 값은 ':'과 포트번호를 포함하지 않습니다.
위 예제는 URL에 포트번호를 포함하지 않기 때문에 window.location.host와 window.location.hostname이 같습니다.
728x90'자바스크립트 끄적끄적' 카테고리의 다른 글
자바스크립트는 왜 그 모양일까? (1) 2023.12.20 커링 함수 (0) 2023.11.30 [JSX] 자바스크립트 꿀팁 (0) 2023.05.26 타입스크립트 설명 (0) 2023.04.17 자바스크립트로 csv 파일 읽기 방법 (0) 2022.11.18