السلام عليكــم ورحمـة الله وبركاتــه
لدى مشكلة فى عمل شات بالاجاكس وهى كيف يتم عرض الرسائل المرسلة فيجب وضع دالة عرض الرسائل فى تايمر كل ثانية مثلا او شىء مثل ذلك، انا جربت اشياء كثيرة ولكن هنجت الصفحة
فما الحل ؟
وشكراً
السلام عليكــم ورحمـة الله وبركاتــه
لدى مشكلة فى عمل شات بالاجاكس وهى كيف يتم عرض الرسائل المرسلة فيجب وضع دالة عرض الرسائل فى تايمر كل ثانية مثلا او شىء مثل ذلك، انا جربت اشياء كثيرة ولكن هنجت الصفحة
فما الحل ؟
وشكراً
اللهم اهدنا فيمن هديت - اللهم صلى على سيدنا محمد
من أراد الدنيا فعليه بالقرآن ومن أراد الآخرة فعليه بالقرآن ومن أرادهما معاً فعليه بالقرآن
طيب ؟؟؟؟ وين السؤال :)
أرجو وضع الكود المستخدم
أعتقد سبب تهنيغ الصفحة هو جلب البيانات كل ثانية بدو التأكد من هذه البيانات هل تم جلبها أم لا وبذلك تبقى الصفحة في لوب
أو أن هناك لوب في الجافا سكريبت أصلا يبقى يعمل دون شرط إيقاف
اتفضل ملف الجافا سكريبت :
var xmlHttp
function showmsg()
{
for (var i=1;i<86400;i+=2)
{
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
{
alert ("Browser does not support HTTP Request")
return
}
var url="support3.php";
var params = "User=";
xmlHttp.onreadystatechange=stateChanged2
xmlHttp.open("POST", url, true);
//Send the proper header information along with the request
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.setRequestHeader("Content-length", params.length);
xmlHttp.setRequestHeader("Connection", "close");
xmlHttp.send(null)
}
}
//********************
showmsg();
function stateChanged2()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
document.getElementById("receive").innerHTML += xmlHttp.responseText + "<br>"
}
}
//********************
function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
//Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
//********************وهذا ملف الـ php :
<?
session_start();
include ("opendb.php");
$b = mysql_query ("select Id from chat where User='Support'");
if (mysql_num_rows ($b) == 0)
{
//echo "<b><center><font color=red>No Support Available</font></center></b>";
exit;
}
$c = mysql_fetch_array ($b);
$supportid= $c['Id'];
$b = mysql_query ("select Id from chat where User='$_SESSION[chat_sess]'");
if (mysql_num_rows ($b) == 0)
{
//echo "<b><center><font color=red>Session Ends</font></center></b>";
exit;
}
$c = mysql_fetch_array ($b);
$guestid = $c['Id'];
$b = mysql_query ("select max(MsgDate) as mdate,max(MsgTime) as mtime from chatmsg where SenderId='$guestid' and ReceiverId='$supportid'");
if (mysql_num_rows ($b) == 0)
{
//echo "<b><center><font color=red>Session Ends</font></center></b>";
exit;
}
$c = mysql_fetch_array ($b);
$mydate = $c['mdate'];
$mytime = $c['mtime'];
$b = mysql_query ("select Msg from chatmsg where SenderId='$guestid' and ReceiverId='$supportid' and MsgDate='$mydate' and MsgTime='$mytime'");
if (mysql_num_rows ($b) == 0)
{
//echo "<b><center><font color=red>Session Ends</font></center></b>";
exit;
}
$c = mysql_fetch_array ($b);
echo $c['Msg'];
include ("closedb.php");
?>وهذا الملف الرئيسيى :
<table border="1"><td><div id="receive"></div></td></table>
الكود يعمل جيداً مرة واحدة ولكن انا اريده ان يعمل كل ثانية ليعرض الرسائل المرسلة الجديدة
وشكراً
اللهم اهدنا فيمن هديت - اللهم صلى على سيدنا محمد
من أراد الدنيا فعليه بالقرآن ومن أراد الآخرة فعليه بالقرآن ومن أرادهما معاً فعليه بالقرآن
راجع هذا الموضوع في الصفحة الثانية
الحل هو في هذا الكود
<script type="text/javascript">
function timedCount()
{
getData('?my_session_id=<?=$Session_id?>', 'msg');
t=setTimeout("timedCount()",5000);
}
timedCount();
</script>لم أنظر إلى الكود الخاص بك لذلك وجب التنبيه لإجراء التعديلات اللازمه