<!DOCTYPE html>
<meta charset="UTF-8">
<html>
<body>
<div id="disp"></div>
</body>
<script>
//원래 AJAX(Asynchronuous javascript XML)
//나온 배경
//인터넷이 급격히 발전하면서, 화면에 담아야 하는 데이터가 많은데
//화면의 일부만 수정하려해도 전체페이지를 다시 가져와서 해석해야하는 방식의 비효율성을 개선하고자 나왔는데,
//당시 아무도 비동기 방식을 믿어주지 않음
//DRY 원칙 => Do not Repeat yourself 반복하지마라 너무 외롭다 ! (lonely lonely)
let myDisp = document.querySelector('#disp');
//아작스 기본 일반화
//매개변수를 1개로 만들고 싶음, 왜? 상황에 따라 매개변수가 다름
let Parameter = {
method:"get",
url : "/jsstudy/data.json",
dataType:"json",
success:function(p_result){
console.log("넘어온값1:",p_result);
}
}
function ajax(psetting){
let xhr = new XMLHttpRequest(); //심부름꾼 아저씨 생성(통신)
xhr.open(psetting.method,psetting.url,true); //시킬일 지정
xhr.onreadystatechange = function (){
//상태변화중 이기적이여서 끝난 것만 관심집중
if(xhr.readyState == 4 && xhr.status == 200){
//바뀌는 부분
if(psetting.dataType =="json"){
psetting.success(JSON.parse(xhr.responseText)); //결과를 받아서 처리해주는 함수
}else{
psetting.success(xhr.responseText);
}
}
}
xhr.send(); //시킨대로 하세용, 실행
}
//멋진말로는 namespace라고도 하는데, 함수이름이 중복되면 짜증남
// 자바스크립트는 이걸 보통 객체를 이용해 해결함, 함수를 객체의 메소드로 맨들어서 소속을 만듦
const $ = {}; //빈객체생성 (네임스페이스용)
//ajax(Parameter);
//또는
$.ajax({
method:"get",
url : "/jsstudy/data.json",
dataType :"text",
success : function(p_result){
console.log("넘어온값1:"+p_result);
}
});
// let xhr = new XMLHttpRequest(); //심부름꾼 아저씨 생성(통신)
// xhr.open("get","/jsstudy/data.json",true); //시킬일 지정
// xhr.onreadystatechange = function (){
// //상태변화중 이기적이여서 끝난 것만 관심집중
// if(xhr.readyState == 4 && xhr.status == 200){
// console.log(xhr.responseText);
// console.log(JSON.parse(xhr.responseText)); //객체로 변환 - 넘 쓰기가 편함
// let result = JSON.parse(xhr.responseText);
// let tblStr = "<table border=1>";
// tblStr += "<tr><th>이름</th><th>나이</th><th>별명</th></tr>";
// for(let i=0; i<result.length; i++){
// tblStr += "<tr><td>" + result(i).name +"</td>";
// tblStr += "<td>" + result(i).age +"</td>";
// tblStr += "<td>" + result(i).alias +"</td></tr>";
// }
// tblStr += "</table>";
// //document.querySelector('#disp').innerHTML = tblStr;
// myDisp.innerHTML = tblStr;
// }
// }
// xhr.send(); //시킨대로 하세용, 실행
</script>
데이터.json
(
{"name":"송쵼이","age":"30","alias":"송쵼이"},
{"name":"정댐","age":"40","alias":"불꽃남자"},
{"name":"탭","age":"20","alias":"가드"}
)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Page Title</title>
<script>
//원래 jQuery는 개발자가 쓰면 안됨, 스트립트 못하는 사람을 위해 만든 훌륭한 자바스크립트 라이브러리
//즉각실행함수?
// (function(p_param){
// alert("메롱메롱"+p_param);
// })("쵼이");
// function 키워도는 크게 2가지 의미를 가짐(함수와 클래스)
// function merong(){
// return "안녕~~";
// }
// alert(merong())
function Saram(p_name,p_alias){
this.name = p_name;
this.alias = p_alias;
//요렇게 선언하면 메모리가 낭비됨!(여유있을땐 이렇게 써도됨ㅋ)
// this.callName = function(){ //메소드 선언
// alert(this.name);
// }
return this; //요것이 암묵적으로 생략되어 있음.
}
let choni = new Saram("쵸니","쵼쵼이");
let daeman = new Saram("정댐","불꽃남자");
//메모리절약을 위해 공유영역 prototype에 정의함
Saram.prototype.callName = function(){
alert(this.name);
}
daeman.callName();
function MyDom(p_sel){
let elems = document.querySelectorAll(p_sel);
this.length = elems.length;
for(let i = 0; i<this.length; i++){
this(i) = elems(i); //공부해오기 JSON 배열식접근법
}
return this; //명시적 표현 생략 가능
}
let divs = new MyDom("#merong");
console.log(divs(2));
</script>
</head>
<body>
<div class="merong">불</div>
<div class="merong">꽃</div>
<div class="merong">남</div>
<div class="merong">자</div>
</body>
</html>
