อาจารย์ค่ะ มีปัญหาเรื่องรัน AJAX บนอินเตอร์เน็ต
อาจารย์ค่ะ หนูมีปัญหาการใ้ช้งาน AJAX
ตอนรันบนอินเตอร์เน็ตค่ะ มันไม่สามารถส่งค่าต่างๆไปได้เลยค่ะ
ตอนที่รันบน localhost ไม่มีปัญหานะค่ะ
หนูจำได้ว่าอาจารย์เคยแนะนำให้ดูเกี่ยวกับระดับความปลอดภัย
หรือตรวจดูว่าได้เปิดใช้ XMLHTTP หรือยัง
หนูตรวจสอบไม่เป็นค่ะ อาจารย์ว่ามันจะเกี่ยวกับเรื่องที่อาจารย์เคยแนะนำหรือเปล่าค่ะ
อาจารย์ช่วยแนะนำวิธีทำให้หนูด้วยค่ะ
ตอนรันบนอินเตอร์เน็ตค่ะ มันไม่สามารถส่งค่าต่างๆไปได้เลยค่ะ
ตอนที่รันบน localhost ไม่มีปัญหานะค่ะ
หนูจำได้ว่าอาจารย์เคยแนะนำให้ดูเกี่ยวกับระดับความปลอดภัย
หรือตรวจดูว่าได้เปิดใช้ XMLHTTP หรือยัง
หนูตรวจสอบไม่เป็นค่ะ อาจารย์ว่ามันจะเกี่ยวกับเรื่องที่อาจารย์เคยแนะนำหรือเปล่าค่ะ
อาจารย์ช่วยแนะนำวิธีทำให้หนูด้วยค่ะ
ลองเอาโค้ดในส่วน ajax มาลงดูครับ เผื่อจะได้เห็นปัญหาได้ง่ายขึ้น
IE7 กับ Chrome ผมว่าไม่น่าเกี่ยวกับตอนเอาขึ้น host จริงกับจำลองบนเครื่องเราเอง (localhost)
ตอนรับค่า ได้ใช้ $_GET หรือ $_POST อย่างถูกต้องหรือเปล่า
path ที่เรียกไป ได้ระบุอย่างถูกต้องหรือเปล่า ถ้าไม่แน่ใจ ให้ระบุ URL ปลายทางแบบเต็มๆ และต้องเป็น URL เดียวกันกับที่ใช้งาน (ไม่สามารถเรียกข้ามโดเมนได้)
กำหนดการใช้ GET หรือ POST กับ Ajax อย่างถูกต้องหรือเปล่า
หนูทดสอบโดยการคลิกแล้วส่งค่าข้อมูลไป แล้วให้มัน alert ค่านั้นกลับมาแสดงมันก็ไม่มีอะไรตอบกลับมาเลยค่ะ ไม่มี error
โค้ดตอนส่งค่า
โค้ดตอนส่งข้อมูลเวลาคลิก
<a href="#" onclick="ajaxTest('AAA');">ทดสอบ</a>
โค้ดตอนแสดงผลข้อมูล alert
เดาว่า เป็นเพราะมันหาไฟล์ไม่เจอครับ (ถ้าใช้ firefox ในการ debug จะได้คำตอบง่ายขึ้น)
ปัญหาอย่างหนึ่งซึ่งมักเกิดขึ้นบน Server แต่ไม่เกิดขึ้นกับ localhost และมักเกิดขึ้นกับ Server ประเภท linux มากกว่า windows ก็คือ
ปัญหาเกี่ยวกับขนาดตัวอักษรของชื่อไฟล์ครับ ซึ่ง linux จะมองตัวอักษร พิมพ์ใหญ่ และ พิมพ์เล็ก ต่างกัน
บน Server อาจมีไฟล์ ajaxtest.php อยู่ แต่โค้ดเรียก AjaxTest.php อาจหากันไม่เจอครับ
สิ่งที่ควรปฏิบัติให้เป็นนิสัยเมื่อจะเขียนโค้ดคือ สร้างไฟล์ทุกไฟล์ ด้วยตัวอักษรภาษาอังกฤษตัวพิมพ์เล็กเท่านั้นครับ
$bt=trim($_POST['bt']);
อย่างแรกเลยตอนแรกตัวแปร data ใน ajaxTest(bt)
ผมว่าลองใส่ alert(data) ไปด้านล่างของ data+="&bt="+bt; เพื่อทดสอบก็ดีนะครับ
เพราะจากที่เห็นเนี่ย
var data=getFormData("frmTest"); //ผมไม่รู้ว่ามันคืนค่ามาเป็นอะไร จากตัว getFromData()
ajaxLoad("post",URL,data,null,null);
ดังนั้นผมเลยอยากให้ลอง alert(data) ดูก่อนน่ะครับ
2
ในส่วน $js=<<<JS ลองไปโค้ดดูมันก็แค่ echo ออกมาเป็นข้อความธรรมดาไม่มีการทำงาน Javascript ผมก็เลยลองใส่ <script type="text/javscript">alert("$links");</script> แทนน่ะครับ
3
เวลาทดสอบ ลองทำ manual คนดูก่อนว่าใส่ url เป็นอะไร
เพราะถ้าเป็น Linux Server มัน sensitive มากครับ เห็นตัวใหญ่กับตัวเล็กในตัวอักษรเดียวกันเป็นคนละตัว
เดาๆว่าปัญหาก็แค่ว่ามันหาไฟล์นั้นไม่เจอ (path ผิด) หรือไม่ก็ส่ง data ไปให้มันผิด (php มันเลยไม่เลยไม่ดึงมาใช้จึงไม่เกิดอะไร)
ปล.ผมเอาตัวหนาไม่ออกแหะ
แต่ถ้าหากมีปัญหาอะไรจะถามอาจารย์ใหม่นะค่ะ