Ajaxとfetch API
動的Webページの表示
初期のWebはフォームタグのデータをサーバに送信し、サーバは新しいページを送信します.すべての新しいページがロードされたため、ページの点滅現象が発生しました.
現代のWebでは、appのような可用性(高速ロード)のために、必要な部分を部分的に更新するだけで、部分的にページにログインする技術が必要です.
そこで動的Webページの概念が現れた.
動的Webページとは、XMLを使用してサーバと自由に通信し、JavaScriptのDOMを使用して無停止で動作するWebです.
XMLHttpRequest(XHR)
JavaScriptを使用したDOM
AJAX(非同期JavaScriptとXML)とは?
JavaScriptライブラリに非同期で通信し、クライアントとサーバの間でデータを交換できるWebアプリケーションを作成するWeb開発技術です.
Webページの一部だけを変更したい場合は、個別のapiリクエストを送信してデータに応答できます.
初期XMLHttpRequestサーバ通信
XMLHttpRequest APIを利用してXMLデータを交換すると,次のコードのようにコードが複雑で可読性が悪く,サーバの動作状態を把握することが困難である.let xhr = new XMLHttpRequest();
xhr.open('get', 'http://localhost:3000/messages');
//요청의 상태 변화를 추적한다.
xhr.onreadystatechange = function() {
if(xhr.readyState !== 4) return;
//readyState 4: 완료
if(xhr.status === 200) {
//status 200: 성공
console.log(xhr.responseText); //서버로부터 온 응답
} else {
console.log('에러: ' + xhr.status); //요청 도중 에러 발생
}
}
xhr.send(); //요청 전송
jQueryによるサーバ通信
jQueryライブラリを用いてコードを簡潔かつ明確に記述しようとする.$.get('http://localhost:3000/messages', function(response) {
//response : 서버로부터 온 응답
};
fetch APIによるサーバ通信
fetch APIは、より直感的で可読性の高いAPIです.
fetch APIがES 6規格となると,追加の導入は不要となる. //요청할 서버 url을 입력
fetch('http://localhost:3000/messages')
.then(function(response) {
return response.json();
})
.then(function(json) {
//json 형태로 전달받은 서버로부터의 응답
})
現代Web上のサーバ通信ストリーム
ブラウザが最初に起動した場合はindexです.フロントサーバにhtmlファイルを要求します.フロントエンドサーバはreactionによって作成されたインデックスです.htmlファイルに返信します.
データのみがfetchを介してバックエンドサーバにapiリクエストを送信します.
サーバはjsonデータのみを応答として送信します.
fetch APIの概要 let obj = {}
//데이터를 받아올 url
fetch('http://localhost:5000/data/latestNews')
.then(response => response.json()) //응답온 것을 json으로 받는다. resend라는 객체안에 json()이란 메서드가 구현이 되어 있음
.then(json1 => {
console.log('json1', json1);
obj.news = json1.data
})
.catch(err => throw(err)) //에러 처리
Headersインタフェース
Headers()ジェネレータを使用して、タイトルオブジェクトを作成できます.let content = "Hello World";
let myHeaders = new Headers();
myHeaders.append("Content-Type", "text/plain");
myHeaders.append("Content-Length", content.length.toString());
myHeaders.append("X-Custom-Header", "ProcessThisImmediately");
Reference
この問題について(Ajaxとfetch API), 我々は、より多くの情報をここで見つけました
https://velog.io/@bining/Ajax-등장-배경
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
let xhr = new XMLHttpRequest();
xhr.open('get', 'http://localhost:3000/messages');
//요청의 상태 변화를 추적한다.
xhr.onreadystatechange = function() {
if(xhr.readyState !== 4) return;
//readyState 4: 완료
if(xhr.status === 200) {
//status 200: 성공
console.log(xhr.responseText); //서버로부터 온 응답
} else {
console.log('에러: ' + xhr.status); //요청 도중 에러 발생
}
}
xhr.send(); //요청 전송
$.get('http://localhost:3000/messages', function(response) {
//response : 서버로부터 온 응답
};
//요청할 서버 url을 입력
fetch('http://localhost:3000/messages')
.then(function(response) {
return response.json();
})
.then(function(json) {
//json 형태로 전달받은 서버로부터의 응답
})
ブラウザが最初に起動した場合はindexです.フロントサーバにhtmlファイルを要求します.フロントエンドサーバはreactionによって作成されたインデックスです.htmlファイルに返信します.
データのみがfetchを介してバックエンドサーバにapiリクエストを送信します.
サーバはjsonデータのみを応答として送信します.
fetch APIの概要 let obj = {}
//데이터를 받아올 url
fetch('http://localhost:5000/data/latestNews')
.then(response => response.json()) //응답온 것을 json으로 받는다. resend라는 객체안에 json()이란 메서드가 구현이 되어 있음
.then(json1 => {
console.log('json1', json1);
obj.news = json1.data
})
.catch(err => throw(err)) //에러 처리
Headersインタフェース
Headers()ジェネレータを使用して、タイトルオブジェクトを作成できます.let content = "Hello World";
let myHeaders = new Headers();
myHeaders.append("Content-Type", "text/plain");
myHeaders.append("Content-Length", content.length.toString());
myHeaders.append("X-Custom-Header", "ProcessThisImmediately");
Reference
この問題について(Ajaxとfetch API), 我々は、より多くの情報をここで見つけました
https://velog.io/@bining/Ajax-등장-배경
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
let obj = {}
//데이터를 받아올 url
fetch('http://localhost:5000/data/latestNews')
.then(response => response.json()) //응답온 것을 json으로 받는다. resend라는 객체안에 json()이란 메서드가 구현이 되어 있음
.then(json1 => {
console.log('json1', json1);
obj.news = json1.data
})
.catch(err => throw(err)) //에러 처리
let content = "Hello World";
let myHeaders = new Headers();
myHeaders.append("Content-Type", "text/plain");
myHeaders.append("Content-Length", content.length.toString());
myHeaders.append("X-Custom-Header", "ProcessThisImmediately");
Reference
この問題について(Ajaxとfetch API), 我々は、より多くの情報をここで見つけました https://velog.io/@bining/Ajax-등장-배경テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol