ช่วยด้วยครับผมใช้ settimeout แล้วมีปัญหาอย่างแรงเลยครับ ช่วยด้วยครับใช้ settimeout แล้วสั่งให้ ajax ดึงข้อมูลมาแสดง
ดูตัวอย่างนี้ครับ
Code (JavaScript)
<script language="JavaScript">
function bodyOnload()
{
doCallAjax('CustomerID')
setTimeout("doLoop();",2000);
}
function doLoop()
{
bodyOnload();
}
</script>
Go to : Ajax: Real Time - Display data Real-time
Date :
2012-03-01 20:37:46
By :
webmaster
ChatRoom
<script src="store/obj.js"></script>
<script language="javascript">
function control(){
ontime();
online();
chatroom();
setTimeout("control()",2000);
}
function chatroom(){
if(obj){
var random=new Date().getTime();
var url="chatroom.php?random="+random;
obj.onreadystatechange=function(){
if(obj.readyState==4){
document.getElementById("room").innerHTML=obj.responseText;
scrollbar();
}
}
obj.open("GET",url,false);
obj.send(null);
}
}
function scrollbar(){
document.getElementById("room").scrollTop=document.getElementById("room").scrollHeight;
}
function online(){
if(obj){
var random=new Date().getTime();
var url="online.php?random="+random;
obj.onreadystatechange=function(){
if(obj.readyState==4){
document.getElementById("online").innerHTML=obj.responseText;
}
}
obj.open("GET",url,false);
obj.send(null);
}
}
function ontime(){
if(obj){
var random=new Date().getTime();
var url="settime.php?random="+random;
obj.open("GET",url,false);
obj.send(null);
}
}
control();
</script>
<meta charset="windows-874">
<table border="1" width="700" height="480" cellpadding="0" cellspacing="0">
<tr>
<td width="500" height="470">
<div id="room" style="width:500px;height:480px;overflow-x:hidden;overflow-y:scroll;"></div>
</td>
<td width="200" valign="top">
<div id="online"></div>
</td>
</tr>
<tr>
<td colspan="2" valign="buttom">
<? include "box.php"; ?>
</td>
</tr>
</table>
เอามาแปะทั้งหมดเลยดีกว่า
Date :
2012-03-01 20:50:02
By :
CrazyLine
มันน่าจะเร็วเกินครับ
Date :
2012-03-01 21:06:30
By :
webmaster
แล้วงี้จะแก้ไงอะครับเพราะ แชต มันก็เกือบต้อง realtime หนิครับ
Date :
2012-03-01 21:13:19
By :
CrazyLine
คุณน่าจะต้องเขียน function เพื่อตรวจสอบสถานะก่อนครับ ว่ามันทำงานเสร็จใน function แรกก่อนครับ แล้วค่อยไปทำงานใน function ต่อไปครับ พวก if(obj.readyState==4) ลองดูครับ
แต่ผมแนะนำให้นำพวก jQuery มาใช้ครับ มันง่ายกกว่าครับ
Date :
2012-03-01 21:21:22
By :
webmaster
พอดีผมไม่เคยหัด jquery มาก่อนด้วยแล้วเหลือเวลาไม่มากก่อนส่ง
ถ้าผมใช้วิธีนี้ได้ไหมอะครับ
Code (JavaScript)
function control(){
ontime();
}
function ontime(){
//ทำงาน
online();
}
function online(){
//ทำงาน
chatroom();
}
function chatroom(){
//ทำงาน
setTimeout("control()",2000);
}
control();
Date :
2012-03-01 21:26:18
By :
CrazyLine
สงสัยไม่ไหวแหะ
Date :
2012-03-01 21:42:11
By :
CrazyLine
มันจะกระพิบตงกล่องข้อความอย่างเดียว ส่วนตง online จะไม่กระพิบ เล่นเอางงเลย - -
Date :
2012-03-01 21:51:24
By :
CrazyLine
Load balance : Server 01