XMLHttpRequest
มี 5 readyState
วินาทีและฉันใช้เพียง 1 ในนั้น (อันสุดท้าย,4
)
อื่น ๆ มีไว้ทำอะไรและฉันสามารถใช้งานได้จริงอะไรบ้าง?
XMLHttpRequest
มี 5 readyState
วินาทีและฉันใช้เพียง 1 ในนั้น (อันสุดท้าย,4
)
อื่น ๆ มีไว้ทำอะไรและฉันสามารถใช้งานได้จริงอะไรบ้าง?
คำตอบ:
รายการreadyState
ค่าทั้งหมดคือ:
State Description
0 The request is not initialized
1 The request has been set up
2 The request has been sent
3 The request is in process
4 The request is complete
(จากhttps://www.w3schools.com/js/js_ajax_http_response.asp )
ในทางปฏิบัติคุณแทบไม่เคยใช้เลยยกเว้น 4.
การใช้งาน XMLHttpRequest บางอย่างอาจช่วยให้คุณเห็นการตอบสนองที่ได้รับบางส่วนresponseText
เมื่อใดreadyState==3
แต่สิ่งนี้ไม่ได้รับการสนับสนุนในระดับสากลและไม่ควรพึ่งพา
คำตอบของkieronประกอบด้วย w3schools ref. ซึ่งไม่มีใครพึ่งพา คำตอบของBobinceให้ลิงก์ซึ่งบอกถึงการใช้งาน IE แบบเนทีฟ
ดังนั้นนี่คือเอกสารต้นฉบับที่ยกมาเพื่อทำความเข้าใจอย่างถูกต้องว่า readystate หมายถึงอะไร:
วัตถุ XMLHttpRequest สามารถอยู่ในหลายสถานะ แอตทริบิวต์ readyState ต้องคืนสถานะปัจจุบันซึ่งต้องเป็นค่าใดค่าหนึ่งต่อไปนี้:
UNSENT (ค่าตัวเลข 0)
สร้างวัตถุแล้วOPENED (ค่าตัวเลข 1) เรียก
วิธีการเปิด () สำเร็จแล้ว ในระหว่างการร้องขอสถานะนี้ส่วนหัวสามารถตั้งค่าโดยใช้ setRequestHeader () และสามารถร้องขอได้โดยใช้เมธอด send ()HEADERS_RECEIVED (ค่าตัวเลข 2)
มีการติดตามการเปลี่ยนเส้นทางทั้งหมด (ถ้ามี) และได้รับส่วนหัว HTTP ทั้งหมดของการตอบกลับสุดท้ายแล้ว ขณะนี้มีสมาชิกการตอบสนองหลายอย่างของอ็อบเจ็กต์กำลังโหลด (ค่าตัวเลข 3)
กำลังรับเนื้อหาเอนทิตีการตอบกลับเสร็จสิ้น (ค่าตัวเลข 4)
การถ่ายโอนข้อมูลเสร็จสมบูรณ์หรือเกิดข้อผิดพลาดระหว่างการถ่ายโอน (เช่นการเปลี่ยนเส้นทางแบบไม่มีที่สิ้นสุด)
โปรดอ่านที่นี่: คำอธิบาย W3C ของ ReadyState
0
, 1
และ2
เพียงติดตามวิธีการหลายวิธีการที่จำเป็นเพื่อให้คำขอของคุณได้เรียกว่าเพื่อให้ห่างไกล
3
บอกคุณว่าการตอบสนองของเซิร์ฟเวอร์เริ่มเข้ามาแล้ว แต่เมื่อคุณใช้ไฟล์ XMLHttpRequest
ออบเจ็กต์จากหน้าเว็บแทบไม่มีอะไรเลย (*) คุณสามารถทำอะไรกับข้อมูลนั้นได้เนื่องจากคุณไม่สามารถเข้าถึงคุณสมบัติเพิ่มเติมที่อนุญาต คุณอ่านข้อมูลบางส่วน
readyState 4
เป็นคนเดียวที่มีความหมาย
(*: เกี่ยวกับการใช้งานที่เป็นไปได้เพียงอย่างเดียวที่ฉันคิดได้สำหรับการตรวจสอบ readyState 3
คือมันส่งสัญญาณชีวิตบางรูปแบบเมื่อสิ้นสุดเซิร์ฟเวอร์ดังนั้นคุณอาจเพิ่มระยะเวลาในการรอการตอบกลับทั้งหมดเมื่อคุณได้รับ)
onreadystatechange เก็บฟังก์ชัน (หรือชื่อของฟังก์ชัน) ที่จะเรียกโดยอัตโนมัติทุกครั้งที่คุณสมบัติ readyState เปลี่ยนแปลง readyState ถือสถานะของ XMLHttpRequest การเปลี่ยนแปลงจาก 0 เป็น 4:
0: คำขอไม่ได้เริ่มต้น
1: สร้างการเชื่อมต่อเซิร์ฟเวอร์แล้ว
2: ได้รับคำขอ
3: การร้องขอการประมวลผล
4: คำขอเสร็จสิ้นและการตอบกลับพร้อมแล้ว
สถานะ 200: "ตกลง"
404: ไม่พบหน้า
(จาก https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState)