📲 JavaScriptのAJAX
13478 ワード
🤔 AJAXって何?
Ajax(Asynchronous JavaScript and XML)とは、JavaScriptを使用してブラウザが非同期でサーバにデータを要求し、サーバ応答のデータを受信し、Webページを動的に更新するプログラミング方式を指す.Ajaxは、ブラウザが提供するWeb API
XMLHttpRequest
オブジェクトに基づいている.Ajaxの前のページはhtmlタグから始まり、サーバーからhtmlタグで終わる完全なHTMLを受け取り、ページ全体を最初から再レンダリングするように操作します.画面切り替え後、サーバから新しいHTMLを受信し、Webページ全体を再レンダリングします.
この伝統的な方法には、次のような欠点があります.
🏷️ JSON
JSONは、クライアントとサーバ間のHTTP通信のためのテキストデータフォーマットである.JavaScriptの言語独立データフォーマットに依存せず、ほとんどのプログラミング言語で使用できます.JSONは、JavaScriptのオブジェクト文字に似たキーと値からなる純粋なテキストです.
JSON.stringify
クライアントがサーバにオブジェクトを転送するには、シリアル化と呼ばれるオブジェクトを文字列化する必要があります.JSON.stringfiyメソッドは、値またはオブジェクトをJSON形式の文字列に変換します.
console.log(JSON.stringify({ x: 5, y: 6 }));
// expected output: "{"x":5,"y":6}"
console.log(JSON.stringify([new Number(3), new String('false'), new Boolean(false)]));
// expected output: "[3,"false",false]"
console.log(JSON.stringify({ x: [10, undefined, function(){}, Symbol('')] }));
// expected output: "{"x":[10,null,null,null]}"
console.log(JSON.stringify(new Date(2006, 0, 2, 15, 4, 5)));
// expected output: ""2006-01-02T15:04:05.000Z""
JSON.parse
サーバからクライアントに送信されるJSONデータは文字列です.この文字列をオブジェクトとして使用するには、逆シーケンス化と呼ばれるJSON形式のオブジェクト化が必要です.JSON.parseメソッドはJSON形式の文字列をオブジェクトに変換します.
const json = '{"result":true, "count":42}';
const obj = JSON.parse(json);
console.log(obj.count);
// expected output: 42
console.log(obj.result);
// expected output: true
📲 XMLHttpRequest
ブラウザは「アドレス」ウィンドウまたはHTMLの中の
form
タグまたはa
タグを通じてHTTP要求伝送機能を提供する.JavaScriptを使用してHTTPリクエストを送信するには、XMLHttpRequest
オブジェクトを使用します.XMLHttpRequestオブジェクトの作成
XMLHttpRequest
オブジェクトは、XMLHttpRequest
コンストラクション関数を呼び出して生成されます.XMLHttpRequest
オブジェクトは、ブラウザが提供するWeb APIであり、ブラウザ環境でのみ正常に動作する.const xhr = new XMLHttpRequest();
HTTPリクエストの送信
HTTPリクエストを送信する場合は、以下の手順に従ってください.
XMLHttpRequest.prototype.open
メソッドHTTPリクエストを初期化します.XMLHttpRequest.prototype.setRequestHeader
方法特定HTTP要求のヘッダ値を設定XMLHttpRequest.prototype.send
方法でHTTP要求を送信// XMLHttpRequest 객체 생성
const xhr = new XMLHttpRequest();
// HTTP 요청 초기화
xhr.open('GET', '/user');
// HTTP 요청 헤더 설정
// 클라이언트가 서버로 전송할 데이터의 MIME 타입 지정:: json
xhr.setRequestHeader('content-type', 'application/json');
HTTP応答の処理
サーバから送信された応答を処理するには、
XMLHttpRequest
オブジェクトに発生したイベントをキャプチャする必要がありますXMLHttpRequest
オブジェクトが持つイベントハンドラ構成では、HTTP応答を処理するために、HTTP要求の現在の状態を示すreadyState
構成値の変更時に発生したreadystatechangae
イベントをキャプチャすることができる.const xhr = new XMLHttpRequest();
xhr.open('GET', 'https://jsonplaceholder.typicode.com/todos/1')';
xhr.send();
// readystatechange 이벤트는 HTTP 요청의 현재 상태를 나타내는 readyState 프로퍼티가
// 변경될 때마다 발생한다.
xhr.onreadystatechange = () => {
// readyState 프로퍼티는 HTTP 요청의 현재 상태를 나타낸다.
// readyState 프로퍼티 값이 4(XMLHttpRequest.DONE)가 아니면
// 서버 응답이 완료되지 않은 상태이다.
if (xhr.readyState !== XMLHttpRequest.DONE) {
return;
}
if (xhr.status === 200) {
console.log(JSON.parse(xhr.response));
}
else {
console.error('Error', xhr.status, xhr.statusText));
}
}
HTTPリクエストをsendメソッドでサーバに送信すると、サーバは応答を返します.ただし、応答がクライアントにいつ到着するかは特定できないため、readystatechange
などのイベントでHTTPリクエストの現在の状態をチェックする必要がある.onreadystatechange
イベントハンドラPropertyに割り当てられたイベントハンドラは、HTTP要求の現在のステータスを示すxhr.readyState
がXMLHttpRequest.DONE
であるかどうかを確認し、サーバの応答が完了したことを確認します.以降のサーバ応答が完了すると、xhrはHTTP要求の応答状態(HTTP状態コード)を表す.statusが200であることを確認し、正常処理とエラー処理を区別します.🧐 整理する
📖 参考資料
Reference
この問題について(📲 JavaScriptのAJAX), 我々は、より多くの情報をここで見つけました https://velog.io/@thumb_hyeok/자바스크립트의-AJAXテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol