ถามเรื่องการ รีเฟสรูปที่สร้างขึ้นมาขากไฟล์phpหน่อยครับ HomeForumถามเรื่องการ รีเฟสรูปที่สร้างขึ้นมาขากไฟล์phpหน่อยครับ Mojo Mojo คือว่าผมทำรูปกราฟแสดงโพลอยู่อะครับโดยการดึงข้อมูลมาจากฐานข้อมูล ทีนี้ปัญหาขอผมคือพอกดแอดข้อมู,ใหม่ลงไปแล้วแต่รูปกราฟที่เเสดงมันยังเป็นรูปเดิมอยู่อะครับ คือผมต้องการให้มันรีเฟสเลยตอนที่กดโหวด อะครับ ผมจะทำยังไงได้บ้างครับ กรกฎ วิริยะ สามารถทำได้โดยการกำหนด src ใหม่ให้กับรูปภาพ (เคยตอบคำถามนี้แล้ว) ข้อสำคัญก็คือ รูปที่กำหนดจะต้องมีชื่อไม่ซ้ำเดิม ไม่งั้นหากส่วชื่อรูปเดิมไป บราวเซอร์จะไปเอาจาก cache ซึ่งจะทำให้รูปไม่เปลี่ยน หนทางอย่างง่าย ที่จะทำให้รูปเปลี่ยนชื่อทุกครั้งที่มีการโหลดใหม่ คือ ให้ใส่ ตัวเลขสุ่มต่อจากชื่อรูป เช่น image.gif?123456789 เป็นต้น ซึ่งตัวเลขต่อท้าย อาจมาจากเวลา (mktime) หรือ ตัวเลขแบบสุ่มก็ได้ครับ Mojo Mojo ยังไงหรือครับ ไม่ค่อยเข้าใจครับ มีตัวอย่างได้ไหมครับ กรกฎ วิริยะ ไม่รู้ว่า ทำวิธีไหนไว้ แต่สามารถลองหาคำตอบบนเว็บได้ครับ เนื่องจากเคยมีคนถาม คำถามนี้แล้ว และ ผมตอบไปแล้ว กรุณาลองหาดูก่อน ถ้าไม่ได้ ลองอธิบายเพิ่มเติมว่าเข้าใจว่าอย่างไร และทำยังไงไว้ Mojo Mojo ผมลองค้นหาแล้วครับ แต่ไม่เจอ ที่ผมคำก็คือ ตอนแรกพอเปิดเว็บมาก็ ใช้onload เรียกฟังชั่น โชว์รูปกราฟขึ้นมาแสดงก่อนอะครับ จากนั้นเมื่อมีคนกดโหวดผมก็ใช้ajax ส่งค่าไปที่หน้าเอาค่าไปเก็บลงฐานข้อมูล จากนั้นก็ ตรวจสอบว่าเก็บค่าเสร็จแล้วหรือป่าวโดยการecho "Y"เมื่อเก็บค่าเสร็จแล้วถ้าเก็บค่าไม่ได้ ก็echo "N" แล้วเช็คจาก responseText อะครับ แบบนี้อะครับ if(req.responseText=="Y"){ alert("บันทึกผลโหวดเรียบร้อยแล้ว"); showgraph(); } อันนี้ฟังชั่นโชว์กราฟครับ function showgraph(){ var ran= Math.random(); document.getElementById("test").innerHTML="<img src='makegraph.php?ran'>"; } แต่ปัญหาก็คือมันยังแสดงรูปกราฟที่เป็นรูปเก่าอยู่อะครับ กรกฎ วิริยะ <img id="test" alt="" /> function showgraph(){ var ran= Math.random(); document.getElementById("test").src = 'makegraph.php?' + ran; } Mojo Mojo ขอบพระคุณมากเลยครับ ความคิดเห็น รายละเอียด ไฟล์อัปโหลด ชนิด jpg, jpeg ขนาดไฟล์ไม่เกิน 2M ส่งความคิดเห็น
ข้อสำคัญก็คือ รูปที่กำหนดจะต้องมีชื่อไม่ซ้ำเดิม ไม่งั้นหากส่วชื่อรูปเดิมไป บราวเซอร์จะไปเอาจาก cache ซึ่งจะทำให้รูปไม่เปลี่ยน
หนทางอย่างง่าย ที่จะทำให้รูปเปลี่ยนชื่อทุกครั้งที่มีการโหลดใหม่ คือ ให้ใส่ ตัวเลขสุ่มต่อจากชื่อรูป เช่น
image.gif?123456789
เป็นต้น ซึ่งตัวเลขต่อท้าย อาจมาจากเวลา (mktime) หรือ ตัวเลขแบบสุ่มก็ได้ครับ
กรุณาลองหาดูก่อน ถ้าไม่ได้ ลองอธิบายเพิ่มเติมว่าเข้าใจว่าอย่างไร และทำยังไงไว้
if(req.responseText=="Y"){
alert("บันทึกผลโหวดเรียบร้อยแล้ว");
showgraph();
}
อันนี้ฟังชั่นโชว์กราฟครับ
function showgraph(){
var ran= Math.random();
document.getElementById("test").innerHTML="<img src='makegraph.php?ran'>";
}
แต่ปัญหาก็คือมันยังแสดงรูปกราฟที่เป็นรูปเก่าอยู่อะครับ
function showgraph(){
var ran= Math.random();
document.getElementById("test").src = 'makegraph.php?' + ran;
}