แก้ปัญหา IE จำ Catch ของ jQueryUI ครับ เมื่อใช้ Dialog
เป็นปัญหาเวลาจะแสดง Dialog
กรณีใช้ Chrome และ FireFox จะไม่จำ Cache
แต่ถ้า IE จะจำ Cache จึงมักมีปํญหากับ Ajax และ Dialog , load
ครับ
แก้ไขตามโค้ดแนวๆนี้ครับ
ลองดูโค้ด ครับ
$(document).ready(function(){
//$.ajaxSetup({cache: false}});
$.ajaxSetup({cache: false}); // <------- ใส่ตรงนี้เข้าไป :)
$("#dialog").dialog({ autoOpen: false });
$("#dialog").dialog( "option", "closeOnEscape", true );
$("#dialog").dialog({ modal: true });
$("button[tag=bt1]").click( function(obj, data){
//alert("ok this is tag=bt1 : " + $(this).attr("rowid") );
var rowid ;
rowid= $(this).attr("rowid");
//$("#iframe1").attr("src","edit.php?id=" + rowid );
$("#dialog").load("edit.php?id=" + rowid );
$("#dialog").dialog({title:"Title Test",width:600,height:450});
$("#dialog").dialog('open');
//location.reload(true); // refresh page
});
});
สรุปว่า ให้ใส่
$.ajaxSetup({cache: false});
เพื่อ เคลียร์แคช ไว้ข้างหน้าโค้ดอื่นๆ
ไม่งั้นจะแสดง Dialog เดิมๆ ข้อมูลเก่าๆ แม้จะแก้ข้อมูล ใน database แล้วก็ตาม
ในโค้ดนี้แสดง วิธี ผ่านค่า ไปยัง page ถัดไปที่ไว้แสดงการแก้ไขข้อมูลด้วยครับ
และมีการใช้ $(this) แต่ไม่ขอกล่าวรายละเอียดครับ ..
=================================
สำหรับ แถวต่างๆที่แสดง
จะมี ปุ่มกดอยู่ ที่ปุ่มกดจะมี attribute เพิ่มเข้ามา
เพื่อใช้อ้างอิง ต่อไป จาก jQuery ครับ
นี่คือตัวอย่าง ในโค้ดนี้ ดึงข้อมูล จาก joomla มาแสดง
โดยแสดงแบบง่ายๆ ไม่สนใจความสวยงามครับ
แล้ว จับ id ใส่ไว้ในปุ่มกดเลย
ส่วน $(this) นั้น ก็ คือ object (DOM) ปุ่มกด นั้่นๆ นั้นเ่อง
$rs = mysql_query("SELECT * from jos_content");
while ($row = mysql_fetch_object($rs)){
echo "<hR>";
//print_r($row);
echo "<BR>ID: " . $row->id ;
echo " " ;
echo "<BR>TITLE: <font color=blue>" . $row->title . "</font>" ;
echo " " ;
echo "<BR>INTRO: " .$row->introtext ;
echo "<BR><button tag=\"bt1\" rowid=\"$row->id\" >edit</BUTTON>";
}
No comments:
Post a Comment