비동기 방식의 ajax를 생활코딩 강의로 배워봤다.
앞서 말한다면 왜 다들 생활코딩 이야기 하는지 알것같다.... 완전 무뇌한이고 어려워서 들어도 모르겠더니....쉽고 잘 설명해주신 덕분에 조금 나아진것 같다..
fetch('css').then(function(response){
response.text().then(function(text){
alert(' css');
});
});
css파일의 내용을 화면에 띄어준다.
<!--fetch('css') css를 바꾸면 경고창의 내용이 바뀐다.
text에 서버가 응답한 결과가 들어가 있다. 결국은 실제 받은 값이다.
화면에 내용을 바꾸고 싶다면 input을 article로 감싸고.
alert(text)을 document.querySelector('article').innerHtml=text; 화면출력함.
css이후 then이하는 한절인데 일끝나면 내가 시킨 일을 해줘...함수를 처리해줘... callback함수를 기재해서 일을 시키는 것임.
//이런걸 Asynchronous라고 함.////
fetch('html').then(callbackme);
console.log(1);
console.log(2);이러면 html파일 화면 출력하고 1, 2, 콘솔출력하고 그다음 callbackme함수를 처리한다.
이런걸 비동기!! 방식 순차적으로 끝날때 까지 기다리지 않고 먼저 되는것 먼저하기.....^^
fetch('html').then(callbackme);
function callbackme(){}함수나
callbackme = function{} 나 같은 것이다.그래서 이름 없이 쓴다고 쓰는 익명함수!!!
fetch('html'), then(function(){}) 이렇게 쓸수 있다.
function(response)){의 response는 response라는 객체가 오고 그중 status:값을 주는데 정상이면 200,
404를 주면 not found 찾을수가 없다는 값이다.
확인원하면 response.status라고 alert안에 기재하면 값이 나온다.
fetch('css').then(function(response)){
if(response.status=='404'){
alert('Not found')
}
});
이런 방식도 있다.
///////////////////////////////////
반복되는 경우 당연히 스크립트로 함수 재활용 하면 된다.
function fecthPage(name){
fetch('name').then(function(response){
response.text().then(function(text){
document.querySelectior('article').innerHTML = text;
})
});
}
name변수 값을 전달받은 fecthPage메서드를 호출하면
name파일로 값요청을 하고 서버로 부터 response 응답하면 text:값을 받아 article 태그안에 text값을 넣어주는 것이다.
///////////////////////////////////////////////////////
북마크.....
내가 원하는 p태그에 id값을 준다. ex: id=three
그럼 주소창 localhost:8000/hash.html#three라고 하면 스크롤이 id가 있는 곳으로 이동을 한다.
또는 a 태그 에 href="#three" 라고 하고 화면에 a태그 글자를 입력하며 마찬가지로 스크롤이 이동한다.
시작하는 페이지를 우리가 선택할수 있다.
<script>
if(window.location.hash){
console.log(location.hash);
// 이러면 해시값 #three가 출력된다...
//#값을 없애고 싶으면 location.hash.substr(1)); 로 기재하면 된다.(window 은 생략가능함)
}
}
a 태그를 클릭하면 주소창에는
</script>
localhost:8000/hash.html#three 이렇게 나옴..
<a href="#!javascript" onclick="fetchPage('javascript')">HTML</a> // #해쉬기호라 !뱅을 관습처럼 붙여서 해쉬뱅이라고 하기도 함
a 태그를 클릭하면
주소창은
localhost:8000/hash.html#javascript 라고 나옴
if(location.hash){ //해시태그가 있다면
fetchPage(location.hash.substr(2)); // 2번째를 자르고
}else{ //없으면
fetchPage('welcome'); // welcome파일로 가라
}
그런데 이것은 새로고침이 아니라서 데이터 검색에서는 좋치 않아 좀더 보완한 pjax를 한다.
////////////////////////////////////////////////
홈페이지를 고치는 것보다 뒷배경의 파일의 정보만 추가하면되는 ...화면에 내용이 바꿀때....
해더부분 추가할때 처럼 말이다.
예를 들어보자.!!!!!
실제 html이나 jsp에는 <ol id="nav"></ol> 밖에는 없었다.
fetch('list').then(function(response){ // 리스트의 파일의
response.text().then(function(text){ //text값을 받아온다.
//<li> <a href="#!javascript" onclick="fetchPage('javascript')">HTML</a></li>
//이렇게 너무 많아서 중복된게 너무 많다.....그래서 list파일에 html,css,jsvascript만 남기고 모두 삭제한다면
var items= text.split(',') //,를 기준으로 값을 배열화 시킨다.
var i=0; //for문의 변수
var tags=''; //태그를 담을 그릇
while( i< items.length){ //배열이니깐 for문 돌린다.
var item=items[i]; //각각의 배열값을 담을 변수
item=item.trim(); //변수에 혹시 빈칸같은것이 있다면 삭제해라.
i=i+1;
var tag='<li> <a href="#!'+item+'" onclick="fetchPage(\''+item+'\')">'+item+'</a></li>';
tags += tag;
}
//document.querySelectior('#nav').innerHTML = text; // id nav라는 태크안에 넣어라.란 뜻이다.
document.querySelectior('#nav').innerHTML =tags; //링크까지 붇은 구문이 출력된다.
})
});
/////////////////////////////////////////////////////////////////////////////////////////////
polyfill
== 신기능을 브라우저가 예전버전에서 지원하지 않기 때문에 대신 지원해주는 기능이다.
fetch기능도 18년도 촬영기준으로 IF11버전은 미지원했다...
그래서 fetch.js라는 파일을 다운로드하여 저장함 그럼 크롬 말고 IF도 가능해서 호환성 확보 한것이다.
-->
'AJAX' 카테고리의 다른 글
| ajax : GSON 엄청간단하게 보이나 이해안됨.^^ (0) | 2022.10.05 |
|---|---|
| AJAX 2일차 : 제이슨 배열출력방법 (0) | 2022.10.05 |
| ajax. json으로 데이터 전송 (1) | 2022.10.04 |
| ajax. jquary로 주고받기 (0) | 2022.10.04 |
| ajax 개요 (0) | 2022.10.04 |