ถามเรื่อง Ajax กับ Jquery HomeForumถามเรื่อง Ajax กับ Jquery chankmit ผมทำฟอร์ม แล้วใช้ Jquery เป็นตัว Validate ฟอร์มหน่ะคับ แล้วหน้าหลักผมใช้ AJAX ดึงฟอร์มนั้นขึ้นมาแสดง แต่ มันติดปัญหาอยู่ว่า ทำไม Jquery ที่ใช้ Validate ฟอร์มนั้นมันไม่ทำงานคับ ฟอร์มมันขึ้นมาในหน้าหลักอยู่ แต่ Jquery มันไม่ทำงานคับ รบกวนด้วยนะคับ กรกฎ วิริยะ ทำความเข้าใจสักนิดครับ Javascript ในหน้าที่ถูก Ajax เรียก ไม่สามารถทำงานได้ครับ ดังนั้น ให้เตรียม Javascript ที่จะต้องใช้งานไว้ก่อนครับ อ่านบทความเกี่ยวกับ Ajax บนเว็๋บประกอบครับ กรกฎ วิริยะ 555+++ หาไม่เจอเหมือนกัน เขียนให้ใหม่แล้ว chankmit แล้วผมต้องทำงัยอ่ะคับ หรือว่ามันใช้ไม่ได้ ต้องอยู่หน้าหลักอย่างเดียวหรือคับ จีระศักดิ์ ผมก็เจอปัญหานี้ เหมือนกันครับ ajax ดึง javascript มาแต่ไม่ทำงาน ลองทำตามบทความ ที่เอา java มาไว้ในหน้าหลัก ก็ใช้ได้ครับ แต่ใช้ได้เฉพาะ IE8 ครับ พอมาลอง กับ IE7 และ Firefox ใช้ไม่ได้อ่ะครับ function ที่พูดถึงคือ autotab ครับ ไปโหลดมาจาก http://www.lousyllama.com/sandbox/jquery-autotab ครับ ลองแล้วยังไงก็ไม่ได้อ่ะครับ แต่ function อื่นๆทำตามบทความได้ทำได้น่ะ งงมากมาย กับ หลายๆ Bowser chankmit แง้ๆ ทำไม่ออก สงสัยได้ทำแบบเดิมแน่ๆ เหอๆ ยังงัยก็ขอบคุณนะคับ จะลองหาวิธีดู กรกฎ วิริยะ ไม่มีทางเลือกครับ เท่าที่รู้ Frame Work อื่นๆ ประสบปัญหานี้ทั้งนั้น บางครั้งเราอาจจะต้องเขียนโค้ดใหม่เพื่อให้ มันรองรับกับวิธีที่จะใช้ครับ ซึ่งต้องดูเป็นกรณีไป ฟังก์ชั่นที่เขียนไว้โดยวิธีปกติ อาจไม่ทำงานเมื่อใช้ Ajax ครับ และนอกจากนี้ เรื่อง cross browser ก็เป็นอีกปัญหา ที่ควรคำนึงถึงครับ ผมยกตัวอย่างจากบทความ ใน event onclick เราก็ยังไม่สามารถใช้ Javascript เพื่อทำงานได้อยู่ดี จำต้องเปลี่ยนมาใช้ event ระดับ 3 แทนครับ กรกฎ วิริยะ ในกรณีของ autotab ฟังก์ชั่นที่มีปัญหาน่าจะเป็น ready() ครับ เนื่องจากฟังก์ชั่นนี้ จะเกิดขึ้นเมื่อเกิด event onload แล้วเท่านั้น ทบทวนปัญหากันนิดนึง เอโค้ดเขามาใช้ รู้หรือเปล่าว่าคำสั่งที่เขาเรียกใช้ เขามีไว้เพื่ออะไร $(document).ready(function() { // do some thing }); เขาใจหรือไม่ว่าคำสั่งด้านบน คือ อะไร และ มีไว้เพื่ออะไร ลองกลับไปศึกษา jquery ดู คำสั่งนี้เทียบเท่ากับ event onload ของ document ครับ ดังนั้นเมือจะเรียกใช้ฟังก์ชั่นภายในคำสั่งนี้ ฟังก์ชั่นนั้นๆ จะทำงานเมื่อ document โหลดเรียบร้อยแล้ว แต่.... เมื่อเราใช้งาน Ajax ในการโหลด document มันไม่ไ้ด้โหลดด้วย ดังนั้น event นี้มันก็ไม่เกิด ทำยังไงมันก็ไม่เกิด.... จุดประสงค์ในการใช้งานคำสั่งนี้ ก็เพื่อรอให้ document โหลดเรียบร้อยแล้ว แต่เมื่อ document โหลดเรียบร้อยแล้ว เราก็ไม่มีความจำเป็นต้องใช้มัน ในการแก้ปัญหาอาจททดลองเอาฟังก์ชั่น ready ออกไปเลยก็ได้ครับ แล้วเอาคำสั่ง เรียกใช้ autotab ไปไว้ที่ javascript หลักแทนครับ หรือถ้ามันยังไม่ทำงาน ก็ให้หน่วงเวลาสักเล็กน้อย เพื่อให้ element ต่างๆ สร้างเสร็จแล้วถึงค่อยเรียกใช้ก็ได้ windows.setTimeout(function{ // do some thing }, 10); ถ้า 10 ยังไม่พอ ก็ลองเพิ่มให้นานขึ้นอีก ก็ได้ครับ ทุกปัญหามีทางออกครับ ถ้ารู้ว่า ต้นเหตุของปัญหาเกิดจากอะไร ซึ่งเราจะรู้ได้ ถ้าเราศึกษาสิ่งที่เราทำให้ถ่องแท้ครับ....ขอให้แก้ไขได้นะ chankmit ขอบคุณค๊าฟ จะลองดูคับ จีระศักดิ์ ละเอียดมากเลยครับ เดียวผมจะลองทำดูครับ ขอบคุณมากๆครับ Penthai [PHP] Khum ถ้าจะใช้งานพวก event jquery เช่น $("a#demo").click(function(){ alert("Mouse Click"); }); $("a#demo2").mouseover(function(){ alert("Mouse Over"); }); $("a#demo3").mouseout(function(){ alert("Mouse Out"); }); ต้องให้อยู่ภายใต้ $(document).ready(function(){ // เริ่มต้นโค้ดของคุณในส่วนนี้ }); หรือ $(function(){ // เริ่มต้นโค้ดของคุณในส่วนนี้ }); หรือ jQuery(function($) { // เริ่มต้นโค้ดของคุณในส่วนนี้ }); ความคิดเห็น รายละเอียด ไฟล์อัปโหลด ชนิด jpg, jpeg ขนาดไฟล์ไม่เกิน 2M ส่งความคิดเห็น
Javascript ในหน้าที่ถูก Ajax เรียก ไม่สามารถทำงานได้ครับ ดังนั้น ให้เตรียม Javascript ที่จะต้องใช้งานไว้ก่อนครับ อ่านบทความเกี่ยวกับ Ajax บนเว็๋บประกอบครับ
หาไม่เจอเหมือนกัน เขียนให้ใหม่แล้ว
แต่ใช้ได้เฉพาะ IE8 ครับ พอมาลอง กับ IE7 และ Firefox ใช้ไม่ได้อ่ะครับ
function ที่พูดถึงคือ autotab ครับ ไปโหลดมาจาก
http://www.lousyllama.com/sandbox/jquery-autotab
ครับ ลองแล้วยังไงก็ไม่ได้อ่ะครับ
แต่ function อื่นๆทำตามบทความได้ทำได้น่ะ งงมากมาย กับ หลายๆ Bowser
ทำไม่ออก สงสัยได้ทำแบบเดิมแน่ๆ
เหอๆ ยังงัยก็ขอบคุณนะคับ จะลองหาวิธีดู
เท่าที่รู้ Frame Work อื่นๆ ประสบปัญหานี้ทั้งนั้น บางครั้งเราอาจจะต้องเขียนโค้ดใหม่เพื่อให้ มันรองรับกับวิธีที่จะใช้ครับ ซึ่งต้องดูเป็นกรณีไป ฟังก์ชั่นที่เขียนไว้โดยวิธีปกติ อาจไม่ทำงานเมื่อใช้ Ajax ครับ และนอกจากนี้ เรื่อง cross browser ก็เป็นอีกปัญหา ที่ควรคำนึงถึงครับ
ผมยกตัวอย่างจากบทความ ใน event onclick เราก็ยังไม่สามารถใช้ Javascript เพื่อทำงานได้อยู่ดี จำต้องเปลี่ยนมาใช้ event ระดับ 3 แทนครับ
ทบทวนปัญหากันนิดนึง เอโค้ดเขามาใช้ รู้หรือเปล่าว่าคำสั่งที่เขาเรียกใช้ เขามีไว้เพื่ออะไร
$(document).ready(function() {
// do some thing
});
เขาใจหรือไม่ว่าคำสั่งด้านบน คือ อะไร และ มีไว้เพื่ออะไร ลองกลับไปศึกษา jquery ดู
คำสั่งนี้เทียบเท่ากับ event onload ของ document ครับ ดังนั้นเมือจะเรียกใช้ฟังก์ชั่นภายในคำสั่งนี้ ฟังก์ชั่นนั้นๆ จะทำงานเมื่อ document โหลดเรียบร้อยแล้ว แต่....
เมื่อเราใช้งาน Ajax ในการโหลด document มันไม่ไ้ด้โหลดด้วย ดังนั้น event นี้มันก็ไม่เกิด ทำยังไงมันก็ไม่เกิด....
จุดประสงค์ในการใช้งานคำสั่งนี้ ก็เพื่อรอให้ document โหลดเรียบร้อยแล้ว แต่เมื่อ document โหลดเรียบร้อยแล้ว เราก็ไม่มีความจำเป็นต้องใช้มัน
ในการแก้ปัญหาอาจททดลองเอาฟังก์ชั่น ready ออกไปเลยก็ได้ครับ แล้วเอาคำสั่ง เรียกใช้ autotab ไปไว้ที่ javascript หลักแทนครับ
หรือถ้ามันยังไม่ทำงาน ก็ให้หน่วงเวลาสักเล็กน้อย เพื่อให้ element ต่างๆ สร้างเสร็จแล้วถึงค่อยเรียกใช้ก็ได้
windows.setTimeout(function{
// do some thing
}, 10);
ถ้า 10 ยังไม่พอ ก็ลองเพิ่มให้นานขึ้นอีก ก็ได้ครับ
ทุกปัญหามีทางออกครับ ถ้ารู้ว่า ต้นเหตุของปัญหาเกิดจากอะไร ซึ่งเราจะรู้ได้ ถ้าเราศึกษาสิ่งที่เราทำให้ถ่องแท้ครับ....ขอให้แก้ไขได้นะ
ขอบคุณค๊าฟ
จะลองดูคับ
ละเอียดมากเลยครับ เดียวผมจะลองทำดูครับ ขอบคุณมากๆครับ
$("a#demo").click(function(){
alert("Mouse Click");
});
$("a#demo2").mouseover(function(){
alert("Mouse Over");
});
$("a#demo3").mouseout(function(){
alert("Mouse Out");
});
ต้องให้อยู่ภายใต้
$(document).ready(function(){
// เริ่มต้นโค้ดของคุณในส่วนนี้
});
หรือ
$(function(){
// เริ่มต้นโค้ดของคุณในส่วนนี้
});
หรือ
jQuery(function($) {
// เริ่มต้นโค้ดของคุณในส่วนนี้
});