ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingใช้ ajax กับ frameset แบบนี้ยังไง
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: ใช้ ajax กับ frameset แบบนี้ยังไง  (อ่าน 1320 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
Kizmo
ก๊วนเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 200



ดูรายละเอียด เว็บไซต์
« เมื่อ: 04 กันยายน 2010, 15:52:15 »

สมมติผมแบ่ง 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
ก๊วนเสียว
*

พลังน้ำใจ: 18
ออฟไลน์ ออฟไลน์

กระทู้: 241



ดูรายละเอียด
« ตอบ #1 เมื่อ: 04 กันยายน 2010, 15:58:07 »

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

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 200



ดูรายละเอียด เว็บไซต์
« ตอบ #2 เมื่อ: 04 กันยายน 2010, 16:07:05 »

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

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

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

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

TwT
บันทึกการเข้า

รับถ่ายภาพ http://emofoto.net
Nomkhonwaan
คนรักเสียว
*

พลังน้ำใจ: 31
ออฟไลน์ ออฟไลน์

กระทู้: 198



ดูรายละเอียด
« ตอบ #3 เมื่อ: 04 กันยายน 2010, 17:45:25 »

ผมลองทำให้ดูน่ะครับอาจจะไม่สมบูรณ์เท่าไหร่น่ะครับ ผมใช้ 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>
« แก้ไขครั้งสุดท้าย: 04 กันยายน 2010, 18:11:52 โดย nomkhonwaan » บันทึกการเข้า
Kizmo
ก๊วนเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 200



ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: 05 กันยายน 2010, 06:37:45 »

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

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

รับถ่ายภาพ http://emofoto.net
kitazawa1st
สมุนแก๊งเสียว
*

พลังน้ำใจ: 29
ออฟไลน์ ออฟไลน์

กระทู้: 563



ดูรายละเอียด
« ตอบ #5 เมื่อ: 05 กันยายน 2010, 20:00:48 »

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

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


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

เล็กสั้น ขยันซอย
หน้า: [1]   ขึ้นบน
พิมพ์