JS กวดวิชา

เจเอสโฮม JS Introduction JS Where To JS เอาท์พุต งบ JS JS ไวยากรณ์ JS ความคิดเห็น ตัวแปร JS เจเอส เลท JS Const JS Operators JS เลขคณิต JS Assignment ประเภทข้อมูล JS ฟังก์ชัน JS วัตถุ JS JS Events JS Strings JS String Methods JS String Search เทมเพลตสตริง JS JS Numbers JS Number Methods JS Arrays JS Array Methods JS Array Sort JS Array Iteration JS Array Const JS Dates รูปแบบวันที่ JS JS วันที่รับเมธอด JS Date Set Methods JS Math JS สุ่ม JS Booleans JS เปรียบเทียบ JS Conditions JS Switch JS ลูปสำหรับ JS Loop สำหรับ In JS วนสำหรับ Of JS วนรอบในขณะที่ JS Break JS Iterables JS ชุด JS Maps JS Typeof JS ประเภทการแปลง JS Bitwise JS RegExp JS Errors JS ขอบเขต JS Hoisting JS โหมดเข้มงวด JS คำสำคัญนี้ JS Arrow Function JS Classes JS JSON JS Debugging คู่มือสไตล์ JS JS แนวทางปฏิบัติที่ดีที่สุด JS ความผิดพลาด JS Performance JS สงวนคำ

เวอร์ชัน JS

เวอร์ชัน JS JS 2009 (ES5) เจเอส 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / ขอบ JS History

วัตถุ JS

คำจำกัดความของวัตถุ คุณสมบัติของวัตถุ วิธีการวัตถุ การแสดงวัตถุ อุปกรณ์เสริมวัตถุ ตัวสร้างวัตถุ ต้นแบบวัตถุ วัตถุ Iterables ชุดวัตถุ แผนที่วัตถุ การอ้างอิงวัตถุ

ฟังก์ชัน JS

คำจำกัดความของฟังก์ชัน พารามิเตอร์ฟังก์ชัน เรียกใช้ฟังก์ชัน เรียกฟังก์ชัน ฟังก์ชัน สมัคร การปิดฟังก์ชัน

JS Classes

แนะนำคลาส การสืบทอดคลาส คลาสคงที่

JS Async

JS Callbacks JS แบบอะซิงโครนัส JS Promises JS Async/รอ

JS HTML DOM

บทนำ DOM วิธี DOM เอกสาร DOM องค์ประกอบ DOM DOM HTML แบบฟอร์ม DOM DOM CSS ภาพเคลื่อนไหว DOM กิจกรรม DOM DOM Event Listener การนำทาง DOM โหนด DOM DOM Collections รายการโหนด DOM

JS เบราว์เซอร์ BOM

JS Window JS Screen JS Location JS History JS Navigator JS Popup Alert JS Timing JS Cookies

JS Web APIs

แนะนำ Web API เว็บฟอร์ม API API ประวัติเว็บ API ที่เก็บข้อมูลเว็บ Web Worker API API ดึงเว็บ เว็บ Geolocation API

JS AJAX

บทนำ AJAX AJAX XMLHttp คำขอ AJAX การตอบสนอง AJAX ไฟล์ AJAX XML AJAX PHP AJAX ASP ฐานข้อมูล AJAX แอปพลิเคชัน AJAX ตัวอย่าง AJAX

JS JSON

บทนำ JSON ไวยากรณ์ JSON JSON กับ XML ประเภทข้อมูล JSON JSON Parse JSON สตริงริฟาย วัตถุ JSON อาร์เรย์ JSON เซิร์ฟเวอร์ JSON JSON PHP JSON HTML JSON JSONP

JS กับ jQuery

ตัวเลือก jQuery jQuery HTML jQuery CSS jQuery DOM

JS กราฟิก

JS กราฟิก JS Canvas JS Plotly JS Chart.js JS Google Chart JS D3.js

ตัวอย่าง JS

ตัวอย่าง JS JS HTML DOM JS HTML อินพุต JS HTML Objects JS HTML Events JS Browser JS Editor JS แบบฝึกหัด JS Quiz ใบรับรอง JS

JS References

วัตถุ JavaScript วัตถุ HTML DOM


AJAX - XMLHttpRequest


ออบเจ็กต์ XMLHttpRequest ใช้เพื่อขอข้อมูลจากเซิร์ฟเวอร์


ส่งคำขอไปยังเซิร์ฟเวอร์

ในการส่งคำขอไปยังเซิร์ฟเวอร์ เราใช้เมธอด open() และ send() ของXMLHttpRequestอ็อบเจ็กต์:

xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
Method Description
open(method, url, async) Specifies the type of request

method: the type of request: GET or POST
url: the server (file) location
async: true (asynchronous) or false (synchronous)
send() Sends the request to the server (used for GET)
send(string) Sends the request to the server (used for POST)

URL - ไฟล์บนเซิร์ฟเวอร์

พารามิเตอร์ url ของopen()เมธอด คือที่อยู่ของไฟล์บนเซิร์ฟเวอร์:

xhttp.open("GET", "ajax_test.asp", true);

ไฟล์อาจเป็นไฟล์ประเภทใดก็ได้ เช่น .txt และ .xml หรือไฟล์สคริปต์ของเซิร์ฟเวอร์ เช่น .asp และ .php (ซึ่งสามารถดำเนินการกับเซิร์ฟเวอร์ก่อนที่จะส่งการตอบกลับกลับ)


อะซิงโครนัส - จริงหรือเท็จ?

คำขอเซิร์ฟเวอร์ควรส่งแบบอะซิงโครนัส

พารามิเตอร์ async ของเมธอด open() ควรตั้งค่าเป็นจริง:

xhttp.open("GET", "ajax_test.asp", true);

ด้วยการส่งแบบอะซิงโครนัส JavaScript ไม่จำเป็นต้องรอการตอบกลับของเซิร์ฟเวอร์ แต่สามารถ:

  • รันสคริปต์อื่น ๆ ขณะรอการตอบกลับของเซิร์ฟเวอร์
  • จัดการกับการตอบสนองหลังจากการตอบสนองพร้อม

ค่าดีฟอลต์สำหรับพารามิเตอร์ async คือ async = true

คุณสามารถลบพารามิเตอร์ที่สามออกจากโค้ดของคุณได้อย่างปลอดภัย

ไม่แนะนำ XMLHttpRequest แบบซิงโครนัส (async = false) เนื่องจาก JavaScript จะหยุดดำเนินการจนกว่าการตอบสนองของเซิร์ฟเวอร์จะพร้อม หากเซิร์ฟเวอร์ไม่ว่างหรือช้า แอปพลิเคชันจะหยุดทำงานหรือหยุดทำงาน


รับหรือโพสต์?

GETง่ายกว่าและเร็วกว่าPOSTและสามารถใช้ได้ในกรณีส่วนใหญ่

อย่างไรก็ตาม ใช้คำขอ POST เสมอเมื่อ:

  • ไฟล์แคชไม่ใช่ตัวเลือก (อัปเดตไฟล์หรือฐานข้อมูลบนเซิร์ฟเวอร์)
  • การส่งข้อมูลจำนวนมากไปยังเซิร์ฟเวอร์ (POST ไม่มีข้อจำกัดด้านขนาด)
  • การส่งอินพุตของผู้ใช้ (ซึ่งสามารถมีอักขระที่ไม่รู้จัก) POST นั้นแข็งแกร่งและปลอดภัยกว่า GET

รับคำขอ

GETคำของ่ายๆ :

ตัวอย่าง

xhttp.open("GET", "demo_get.asp");
xhttp.send();

ในตัวอย่างข้างต้น คุณอาจได้รับผลลัพธ์ที่แคชไว้ เพื่อหลีกเลี่ยงปัญหานี้ ให้เพิ่ม ID ที่ไม่ซ้ำให้กับ URL:

ตัวอย่าง

xhttp.open("GET", "demo_get.asp?t=" + Math.random());
xhttp.send();

หากคุณต้องการส่งข้อมูลด้วยGETวิธีดังกล่าว ให้เพิ่มข้อมูลลงใน URL:

ตัวอย่าง

xhttp.open("GET", "demo_get2.asp?fname=Henry&lname=Ford");
xhttp.send();

วิธีที่เซิร์ฟเวอร์ใช้อินพุตและวิธีที่เซิร์ฟเวอร์ตอบสนองต่อคำขอ ได้อธิบายไว้ในบทต่อๆ ไป



โพสต์คำขอ

POSTคำของ่ายๆ :

ตัวอย่าง

xhttp.open("POST", "demo_post.asp");
xhttp.send();

หากต้องการ POST ข้อมูล เช่น แบบฟอร์ม HTML ให้เพิ่มส่วนหัว HTTP ด้วยsetRequestHeader(). ระบุข้อมูลที่คุณต้องการส่งในsend()วิธีการ:

ตัวอย่าง

xhttp.open("POST", "ajax_test.asp");
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("fname=Henry&lname=Ford");
Method Description
setRequestHeader(header, value) Adds HTTP headers to the request

header: specifies the header name
value: specifies the header value

คำขอแบบซิงโครนัส

หากต้องการดำเนินการตามคำขอแบบซิงโครนัส ให้เปลี่ยนพารามิเตอร์ที่สามในopen()เมธอดเป็นfalse:

xhttp.open("GET", "ajax_info.txt", false);

บางครั้ง async = false ใช้สำหรับการทดสอบอย่างรวดเร็ว คุณจะพบคำขอแบบซิงโครนัสในโค้ด JavaScript ที่เก่ากว่า

เนื่องจากโค้ดจะรอจนกว่าเซิร์ฟเวอร์จะเสร็จสิ้น จึงไม่จำเป็นต้องมีonreadystatechange ฟังก์ชัน:

ตัวอย่าง

xhttp.open("GET", "ajax_info.txt", false);
xhttp.send();
document.getElementById("demo").innerHTML = xhttp.responseText;

ไม่แนะนำ XMLHttpRequest แบบซิงโครนัส (async = false) เนื่องจาก JavaScript จะหยุดดำเนินการจนกว่าการตอบสนองของเซิร์ฟเวอร์จะพร้อม หากเซิร์ฟเวอร์ไม่ว่างหรือช้า แอปพลิเคชันจะหยุดทำงานหรือหยุดทำงาน

เครื่องมือสำหรับนักพัฒนาสมัยใหม่ควรเตือนเกี่ยวกับการใช้คำขอแบบซิงโครนัสและอาจมีข้อยกเว้น InvalidAccessError เมื่อเกิดขึ้น