ThaiSEOBoard.com

พัฒนาเว็บไซต์ => Programming => ข้อความที่เริ่มโดย: Kizmo ที่ 04 กันยายน 2010, 15:52:15



หัวข้อ: ใช้ ajax กับ frameset แบบนี้ยังไง
เริ่มหัวข้อโดย: Kizmo ที่ 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


หัวข้อ: Re: ใช้ ajax กับ frameset แบบนี้ยังไง
เริ่มหัวข้อโดย: 64tktv ที่ 04 กันยายน 2010, 15:58:07
สงสัยต้องแบ่ง frame อีก  :wanwan003:
เป็น 3 / 4 / 5 ตามจำนวนที่ต้องการแบ่งการอัพเดท เพราะเวลาอัพเดทต้องอัพเดททั้งก้อน
ถ้าหากมีข้อแนะนำดีกว่า ช่วยแนะนำด้วยครับ


หัวข้อ: Re: ใช้ ajax กับ frameset แบบนี้ยังไง
เริ่มหัวข้อโดย: Kizmo ที่ 04 กันยายน 2010, 16:07:05
ตอนนี้คิดได้แค่

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

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

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

TwT


หัวข้อ: Re: ใช้ ajax กับ frameset แบบนี้ยังไง
เริ่มหัวข้อโดย: Nomkhonwaan ที่ 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>


หัวข้อ: Re: ใช้ ajax กับ frameset แบบนี้ยังไง
เริ่มหัวข้อโดย: Kizmo ที่ 05 กันยายน 2010, 06:37:45
โค๊ด:
parent.right_frame.location = "http://google.co.th";
parent.right_frame.location.reload();

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


หัวข้อ: Re: ใช้ ajax กับ frameset แบบนี้ยังไง
เริ่มหัวข้อโดย: kitazawa1st ที่ 05 กันยายน 2010, 20:00:48
โค๊ด:
parent.right_frame.location = "[url]http://google.co.th[/url]";
parent.right_frame.location.reload();

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


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