ใช้ ajax กับ frameset แบบนี้ยังไง

เริ่มโดย Kizmo, 04 กันยายน 2010, 15:52:15

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

Kizmo

สมมติผมแบ่ง frame ไว้ 2 ฝั่ง

ฝั่งซ้ายเป็น ajax แสดงผลรัน function java ทุก ๆ 3 วินาที

ถ้าข้อมูลใหม่เข้า แล้วสั่งให้มัน refresh ฝั่งขวา

แต่ต้องเฉพาะข้อมูลบางข้อมูลเท่านั้นเช่น

"มีข้อมูลใหม่เข้า" <<< พอขึ้นอันนี้ก็ refresh ฝั่งขวาทันที

แต่ถ้าเป็นอย่างอื่นเช่น "มีการเปลี่ยนแปลงข้อมูล" "มีการยกเลิกข้อมูล" อันนี้ไม่ต้อง refresh ฝั่งขวา

เพราะมันมี tag <a href=hello.htm target=frm_r></a> อันนี้อยู่ที่คลิก link แล้วมันจะ ไปเปิดหน้าอีกฝั่งนึง

ทีนี้ผมไม่อยากให้ต้องคลิก ข้อมูลมาตรวจสอบปุ๊บ refresh เลย แบบนี้อ่ะครับ

มีทางไหนพอเป็นไปได้บ้าง TwT
รับถ่ายภาพ http://emofoto.net

64tktv

สงสัยต้องแบ่ง frame อีก  :wanwan003:
เป็น 3 / 4 / 5 ตามจำนวนที่ต้องการแบ่งการอัพเดท เพราะเวลาอัพเดทต้องอัพเดททั้งก้อน
ถ้าหากมีข้อแนะนำดีกว่า ช่วยแนะนำด้วยครับ

Kizmo

ตอนนี้คิดได้แค่

ถ้า ฝั่งซ้าย ออกข้อมูล "มีข้อมูลใหม่เข้า" ให้มันออกมาพร้อมกับ ปุ่ม link <a href=hello.htm target=frm_r></a>

เพื่อให้คลิกแล้ว refresh หน้าฝั่งขวา

แต่ต้องการข้ามขั้นตอนคือ ออกข้อมูลแล้วไม่ต้องคลิก ให้ link หน้าฝั่งขวาซ้ำ เพื่อ refresh ได้เลย

TwT
รับถ่ายภาพ http://emofoto.net

Nomkhonwaan

#3
ผมลองทำให้ดูน่ะครับอาจจะไม่สมบูรณ์เท่าไหร่น่ะครับ ผมใช้ jQuery เป็น framework น่ะครับ
http://code.jquery.com/jquery-1.4.2.min.js


อันนี้เป็นส่วนของ frame หลักน่ะครับ

<!doctype html>
<html lang="en">
<frameset cols="50%,50%">
<frame noresize="noresize" name="left_frame" id="left_frame" src="left_frame.html" />
<frame noresize="noresize" name="right_frame" id="right_frame" src="right_frame.html" />
</frameset>
<noframes>
Sorry, your browser does not handle frames!
</noframes>
</html>


อันนี้เป็นส่วนของ frame ทางซ้ายมือ โดยมีเงื่อนไขว่า ถ้า random เลขได้เลข 3 จะทำการเอา url ของ google ใส่ แต่ถ้าได้เลข 1 จะทำการ reload page ครับ

left_frame.html
<!doctype html>
<html lang="en">
<head>
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script type="text/javascript">
<!--
$(function() {
$('#btn').live('click', function() {
reload();
});
});

function reload()  {
var num = Math.floor(Math.random() * 4);
$('<li>').html(num).appendTo('ul');
if(num == 3) {
parent.right_frame.location = "http://google.co.th";
} else if(num == 1) {
parent.right_frame.location.reload();
}
setTimeout('reload()', 1000);
}
//-->
</script>
</head>
<body>
left frame
<button id="btn">test</button>
<ul>
</ul>
</body>
</html>


และอันนี้คือส่วนของ frame ทางขวามือครับ ซึ่งไม่มีอะไรเลย - -'

right_frame.html

<!doctype html>
<html lang="en">
<head>
</head>
<body>
right frame
</body>
</html>

Kizmo

parent.right_frame.location = "http://google.co.th";
parent.right_frame.location.reload();


นี่แหละโค้ดที่ผมต้องการ ขอบคุณมากครับ *0*
รับถ่ายภาพ http://emofoto.net

kitazawa1st

อ้างถึงจาก: Kizmo ใน 05 กันยายน 2010, 06:37:45
parent.right_frame.location = "http://google.co.th";
parent.right_frame.location.reload();


นี่แหละโค้ดที่ผมต้องการ ขอบคุณมากครับ *0*

ถ้าใช้ reload() ระวังเรื่องการส่งค่าผ่านตัวแปร POST ด้วยนะครับ  :wanwan012:
เล็กสั้น ขยันซอย