Powered By Blogger

16 October 2010

แก้ปัญหา IE จำ Catch ของ jQueryUI ครับ เมื่อใช้ Dialog

แก้ปัญหา 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: