วันนี้จะว่ากันถึงเรื่องตกม้าตายเรื่องหนึ่งในการทำงานของผมตอนที่เขียนโค้ด Pantip3G โดยมีปัญหาด้าน Ajax เรียกหน้า PHP แล้วจะรับค่าคืนมาเป็น JSON ซึ่งผมก็เขียนแบบง่ายโดยใช้ jQuery function $.post ซึ่งมันก็ง่ายๆไม่มีอะไรประเด็นคือไม่ได้ค่าอะไรกลับ … ลองจับ bug เองแล้วตอนแรกเข้าใจว่าอาจจะส่งค่า type ผิดเพราะถ้าเรากำหนดเป็น JSON แต่ว่าถ้าเราส่งกลับมาเป็น String มันจะไม่เห็นซึ่งอันนี้เป็นบทเรียนมาครั้งหนึ่งแล้ว :( โอเค … เช็คแล้วไม่เจอก็เลยไปลอง debug อีกแบบคือไป debug ที่หน้า PHP ว่ามันเกิดอะไรขึ้น ค่าที่ส่งกลับมานั้นเป็น JSON หรือไม่ หรือว่ารูปแบบที่จัดนั้นไม่ถูกต้องก็ลองไปปิดทีละบรรทัดดู ก็ปรากฎว่ามันรันได้ถ้าปิดทีละบรรทัด แต่ให้มันเป็น array ทั้งชุดแล้วส่งกลับมาเป็น JSON นั้นทำไม่ได้ เฮ้อ … ปวดกะบาล ทำไมฟ่ะ !!?
ก็มีอีกกรณีคือผมใช้ function foreach ข้อมูลแล้วเก็บใส่ array ทีเดียวแล้ว echo JSON ออกมา ลองให้มันวนรอบเดียวแล้ว print_r ออกมาปรากฎว่า … ได้โว้ย ! อ้าวแล้วทำไมให้มันวนทุกรอบไม่ได้ว่ะ !!? คิดไม่ออกเลยไป search หาคำตอบจากอากู๋ ว่ามันเกิดอะไรขึ้น สรุปได้ว่า ผมใช้ค่าแปรเกิน limit บรรทัดของมันเพราะว่าผมรัน 700 แถวที่เป็น JSON 1 แถวของผมมี array มากมายอีกด้วยจึงกินไปอีกหลายบรรทัด เช่น
[php]
{ ‘_id’ : 1 , name : ‘tong’ , …. , status : 1 }
,{ ‘_id’ : 2 , name : ‘tith’ , …. , status : 1 }
ซึ่งละว่ามันเยอะมากต่อ 1 แถวข้อมูล
[/php]
จึงไม่ return อะไรออกมาเลยเพราะว่ามันเกิน limit ก็เป็นสิ่งที่ต้องจำไว้แต่จริงๆคิดว่ามันน่าจะปรับได้ว่าให้เท่าไรอย่างไร สำหรับข้อมูลที่เยอะๆ
ไว้โอกาสหน้าจะมาเล่าให้ฟังน้า
ถ้าคุณชอบบทความในเว็บนี้ และอยากสนับสนุนเรา เพียงแค่คุณสมัครรับข่าวสารด้านล่างจะได้รับสิทธิ์พิเศษก่อนใคร เราสัญญาว่าจะส่งบทความที่เป็นประโยชน์ต่อคุณอย่างแน่นอนครับ