onReadyStateChange

สวัสดีครับ...

ผมอยากจะขอความคิดเห็น เรื่องการใช้งาน Ajax สักหน่อยครับ

เวลาที่เราเรียก Ajax เพื่อโหลดข้อมูลขึ้นมาแสดง ในบางครั้งข้อมูลที่เรียกขึ้นมาก็จะแสดงออกมาช้าหรือเร็วต่างกัน

แต่ในกรณีที่ข้อมูลเดียวกัน หน้าเดียวกัน เงื่อนไขในการเรียกก็เหมือนกัน บางครั้งมันก็โหลดขึ้นมาไม่ได้ โดยแสดงรูปรอโหลดค้างอยู่อย่างนั้น

จนต้องกดปุ่มเพื่อเรียกหน้านั้นใหม่ หรือเรียกหน้าอื่นก่อน หรืออาจจะต้อง f5 ไปเลย จึงจะเรียกหน้านั้นได้ปกติ

เหมือนกับว่ามันตรวจสอบสถานะไม่ถูกต้องครับ ผมมีความคิดว่าน่าจะมีปัญหาที่ onReadyStateChange



if (HttPRequest.readyState == 4 && HttPRequest.status == 200){

น่าจะติดตรงขั้นตอนการตรวจสอบตามข้างบนนี้น่ะครับ



ผมใช้ Appserv ในเครื่อง PC ตัวเอง แต่ที่เจอก็เคยเจอในเครื่องที่ใช้จริงในองค์กรด้วย

ผมทดลองโดยการกดปุ่มที่ใช้เรียกฟังก์ชั้นนี้เร็วๆ โดยส่วนใหญ่ก็โหลดข้อมูลขึ้นมาได้รวดเร็วปกติ

แต่ในบางครั้งก็เกิดปัญหาดังที่กล่าวมาแล้ว



ผมลองใช้ทั้งฟังก์ชั่นที่เขียนเอง และใช้ Gajax ก็ติดเหมือนกันครับ
05 มิ.ย. 2554 3 2,513


อาการที่ว่า ไม่ได้มีปัญหามาจาก script หรอครับ...

โดยทั่วไป ระบบจะทำการส่งตามรูปแบบมาตรฐานอยู่แล้ว ซึ่งมันจะต้องส่งกลัมา ที่ onReadyStateChange เสมอ แต่...

ค่าที่ส่งกลับอาจไม่ใช่ค่าที่อยากได้ คือ 4 และ 200 ลองอ่านดูบทความนะครับว่าอาจเป็นอะไรได้บ้าง

อีกปัญหาคือ มีโอกาศ เกิด timeout ได้ง่าย โดยที่เราก็ไม่รู้ตัวด้วย เนื่องจาก Ajax จะไม่มีการ timeout ครับ ถ้าหายก็หายไปเลย



ปัญหาที่เกิด อาจเกิดจาก Server นะครับที่ไม่ตอบสนอง และ อาจ ช้าหรือเร็วต่างกันได้ในบางครั้ง ซึ่งทั้งหมดไม่ใช่เรื่องแปลกอะไร เราควรออกแบบระบบให้ป้องกันการเกิด timeout ให้ได้มากกว่า เช่น อาจเพิ่มการจับเวลาว่ามีการส่งกลับภายในเวลาที่กำหนดหรือไม่ ถ้าไม่มีการส่งกลับก๋ให้ไปซ่อน loading เพื่อให้สามารถเริ่มกระบวนการใหม่ได้ เป็นต้น

อีกทีก๋คือ หา server ที่เร็วขึ้นอีกสักหน่อยก้ดีครับ หรือ การเชื่อมต่อของเราเองนั้นแหละที่อาจเป็นปัญหาก็ได้





 


#1

ขอบพระคุณมากครับ....

ที่ต้องหาวิธีทำให้มันตรวจสอบสถานะ 4 หรือ 200 ให้มีการ Time out น้อยที่สุดก็เพราะบางครั้งต้องเรียกฟังก์ชั่นอื่นๆต่อๆกันไป เพื่อตรวจสอบหรืออาจต้อง INSERT ข้อมูลลงฐานข้อมูลให้สำเร็จ



บางครั้งถ้าหากเรียกฟังก์ชั่นต่อๆกัน มันรู้สึกว่ามันทำงานไม่ค่อยจำสำเร็จยังไงไม่รู้เหมือนกัน

#2

555+++



ทำแบบนั้นก็เท่ากับให้ timeout มันเกิดมากขึ้นน่ะสิ



ควรจัดกลุ่มการทำงานและ ส่งไปครั้งเดียวแต่ทำหลายๆอย่าง มากกว่าที่จะส่งไปหลายๆการทำงาน เพราะ การส่งแต่ละครั้ง โอกาศจะหายมีมากกว่านะครับ และ request ที่มากไปอาจทำให้ระบบล่มได้โดยไม่จำเป็น



#3
ความคิดเห็น
ไฟล์อัปโหลด ชนิด jpg, jpeg ขนาดไฟล์ไม่เกิน 1024
^