คำขอ AJAX ที่ซ่อนอยู่คืออะไร
ฉันสังเกตเห็นการเพิ่มขึ้นของการใช้คำขอ AJAX ที่ซ่อนอยู่ซึ่งออกแบบมาเพื่อให้การกระทำของผู้ใช้ปรากฏขึ้นทันที ฉันจะอ้างถึงคำขอ AJAX ประเภทนี้ว่าไม่ปิดกั้น มันเป็นคำขอ AJAX ที่เกิดขึ้นโดยที่ผู้ใช้ไม่ได้ตระหนักว่ากำลังเกิดขึ้นมันถูกดำเนินการในพื้นหลังและการดำเนินการของมันเงียบ ( ไม่มี verbose เพื่อระบุว่าการโทร AJAX เสร็จสมบูรณ์แล้ว ) เป้าหมายคือเพื่อให้การดำเนินการปรากฏว่ามันเกิดขึ้นทันทีเมื่อมันยังไม่เสร็จ
นี่คือตัวอย่างของคำขอ AJAX ที่ไม่ปิดกั้น
- ผู้ใช้คลิกที่ลบในชุดอีเมล รายการจะหายไปจากกล่องจดหมายทันทีและสามารถดำเนินการต่อกับการดำเนินการอื่นได้ ในขณะเดียวกันคำขอ AJAX กำลังประมวลผลการลบรายการในพื้นหลัง
- ผู้ใช้กรอกฟอร์มสำหรับบันทึกใหม่ คลิกบันทึก รายการใหม่จะปรากฏในรายการทันที ผู้ใช้สามารถเพิ่มระเบียนใหม่ต่อไปได้
เพื่อชี้แจงนี่คือตัวอย่างของการปิดกั้นการร้องขอ AJAX;
- ผู้ใช้คลิกที่ลบในชุดอีเมล เคอร์เซอร์นาฬิกาทรายปรากฏขึ้น มีการร้องขอ AJAX และเมื่อตอบสนองเคอร์เซอร์นาฬิกาทรายถูกปิดใช้งาน ผู้ใช้ต้องรอวินาทีเพื่อให้การดำเนินการเสร็จสมบูรณ์
- ผู้ใช้กรอกฟอร์มสำหรับบันทึกใหม่ คลิกบันทึก แบบฟอร์มเปลี่ยนเป็นสีเทาเมื่อมีตัวโหลด AJAX เคลื่อนไหว ข้อความจะปรากฏ "บันทึกข้อมูลของคุณแล้ว" และบันทึกใหม่จะปรากฏในรายการ
ความแตกต่างระหว่างสองสถานการณ์ข้างต้นคือการตั้งค่า AJAX ที่ไม่บล็อกไม่มีผลตอบรับการทำงานและการตั้งค่า AJAX บล็อก
ความเสี่ยงของคำขอ AJAX ที่ซ่อนอยู่
ความเสี่ยงที่ใหญ่ที่สุดของคำขอ AJAX ลักษณะนี้คือเว็บแอปพลิเคชันอาจอยู่ในสถานะที่แตกต่างอย่างสิ้นเชิงเมื่อคำขอ AJAX ล้มเหลว
ตัวอย่างเช่นตัวอย่างที่ไม่บล็อก
- ผู้ใช้เลือกอีเมลจำนวนมาก คลิกปุ่มลบ การดำเนินการจะปรากฏขึ้นทันที (รายการก็หายไปจากรายการ) จากนั้นผู้ใช้คลิกที่ปุ่มเขียนและเริ่มพิมพ์อีเมลใหม่ ขณะนี้รหัส JavaScript ค้นพบคำขอ AJAX ล้มเหลว สคริปต์สามารถแสดงข้อความแสดงข้อผิดพลาดได้ แต่ตอนนี้ไม่มีประโยชน์จริงๆ
อีกตัวอย่างหนึ่งคือการบล็อก
- ผู้ใช้เลือกอีเมลจำนวนมาก คลิกปุ่มลบ เห็นแก้วชั่วโมง แต่การดำเนินการล้มเหลว พวกเขาได้รับข้อความแสดงข้อผิดพลาดว่า "error. blah blah blah" พวกเขาจะถูกส่งกลับไปยังรายการอีเมลและพวกเขายังมีอีเมลที่พวกเขาต้องการที่จะลบการเลือก พวกเขาสามารถพยายามลบได้อีกครั้ง
นอกจากนี้ยังมีความเสี่ยงด้านเทคนิคอื่น ๆ สำหรับการดำเนินการตามคำขอ AJAX ที่ไม่ปิดกั้น ผู้ใช้สามารถปิดเบราว์เซอร์สามารถนำทางไปยังเว็บไซต์อื่นและพวกเขาสามารถนำทางไปยังตำแหน่งอื่นในเว็บปัจจุบันที่ทำให้บริบทของการตอบสนองข้อผิดพลาดไม่มีความหมาย
แล้วทำไมมันถึงได้รับความนิยม?
Facebook, Google, Microsoft, ฯลฯ .. โดเมนขนาดใหญ่เหล่านี้กำลังใช้คำขอ AJAX แบบไม่มีการปิดกั้นเพิ่มมากขึ้นเพื่อให้การทำงานปรากฏว่ามีการดำเนินการทันที ผมเคยเห็นการเพิ่มขึ้นในการแก้ไขแบบฟอร์มที่ได้ไม่มีการบันทึกหรือปุ่มส่ง ทันทีที่คุณออกจากสนามหรือกด Enter บันทึกค่าแล้ว ไม่มีโปรไฟล์ของคุณได้รับการปรับปรุงข้อความหรือขั้นตอนการบันทึก
คำขอ AJAX นั้นไม่แน่นอนและไม่ควรถือว่าสำเร็จจนกว่าจะเสร็จ แต่มีเว็บแอปพลิเคชันหลัก ๆ จำนวนมากที่ใช้งานเช่นนั้น
เว็บไซต์เหล่านี้ที่ใช้การโทร AJAX ที่ไม่มีการบล็อกเพื่อจำลองแอปพลิเคชันที่ตอบสนองต่อความเสี่ยงที่ไม่จำเป็นในราคาที่ปรากฏอย่างรวดเร็วหรือไม่?
นี่เป็นรูปแบบการออกแบบที่เราทุกคนควรปฏิบัติตามเพื่อให้สามารถแข่งขันได้หรือไม่?