• 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشكل عجيب در استفاده از اي جكس
#1
جديدا براي بخش login سايتم از اي جكس استفاده كرده ام . كه توسط يه فرم شناسه و پسورد رو مي گيره و در صورت درست بودن اون ها كنترل پنل رو مثلا داخل جدولي به نام control panel به كاربر نشون ميده .
قبلا هم براي چك كردن كاربران آنلاين از اي جكس استفاه مي كردم . در اين قسمت تابعي به نام check_online هر 10 ثانيه فراخواني مي شد كه وظيفه داشت مثلا با صفحه check_online.php از طريق اجكس ارتباط برقرار كنه و حاصل داخل جدولي به نام user_online نشون بده . اين از اين . اما مشكلي كه جديدا باهاش مواجه شدم اينه كه گاهي اوقات وقتي كاربر لاگين مي كنه و در صورت درستي شناسه و پسورد به جاي نمايش كنترل پنل كاربري در جدول control panel محتواي چيزي كه تابع check_online گرفته نمايش داده مي شه . البته گاهي اوقات اين اتفاق مي افته . من كد رو مي ذارم شايد بهتر متوجه بشين
اين از سازنده XmlHttp:
کد پی‌اچ‌پی:
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;


اين از تابع login :
کد پی‌اچ‌پی:
function login(){
    
     
xmlHttp=GetXmlHttpObject();
      if (
xmlHttp==null)
      {
        
alert ("Browser does not support HTTP Request");
        return;
      }
      
     
news_id=document.getElementById('news_id').value;
     
url='php_ajax/login.php';
      
     
        
username=document.getElementById('username').value;
        
password=document.getElementById('password').value;
        
url=url+'?username='+username+'&password='+password+'&news_id='+news_id+'&q='+Math.random();
     
     
     
xmlHttp.onreadystatechange=insert_login;
     
xmlHttp.open('GET',url,true);
     
xmlHttp.send(null);
     
     function 
insert_login(){
           switch(
xmlHttp.readyState){
            case 
1:
                  
document.getElementById('login_divider').innerHTML="<center><img src='images/wait_ax.gif' style='vertical-align:middle'/>&nbsp;&nbsp;<font color='#666666' style='font-size:12px;font-weight:bold' dir='rtl'>لطفا منتظر بمانید !!!</font></center>"  ;
            break;
            
            case 
4:
            case 
'complete':
                  
                  if (
xmlHttp.responseText){
                      
                    
                    
                    
document.getElementById('controlpanel').innerHTML=xmlHttp.responseText;
                    

                  }else{
                     if (
confirm('شناسه کاربری یا کلمه عبور نادرست است \n آیا مایل به ایجاد یک حساب کاربری هستید ؟')){
                         
document.location.href='register.php?action=accept';
                      }
                  }
            break;
            
            }
//switch(xmlHttp.readyState){
     
}// function insert_related(){
}//function login(){ 

اين هم از تابع check_login :
کد پی‌اچ‌پی:
function check_online(){ 

      
xmlHttp=GetXmlHttpObject();
      if (
xmlHttp==null)
      {
        
alert ("Browser does not support HTTP Request");
        return;
      }
    
      
url='php_ajax/check_online.php';
      
url=url+'?rand='+Math.random();
      
//alert(url);
      
xmlHttp.onreadystatechange=stateChanged;
      
xmlHttp.open("GET",url,true);
      
xmlHttp.send(null);
      
      function 
stateChanged(){
          
          switch(
xmlHttp.readyState){
            case 
4:
            case 
'complete':
                  if (
xmlHttp.responseText){
                    
                     
                     
document.getElementById("user_online").innerHTML=xmlHttp.responseText;
                  }
            break;
            
            }
//switch(xmlHttp.readyState){
        
}//function stateChanged(){
}//function check_online() 
  پاسخ
تشکر شده توسط :
#2
فكر مي كنم مشكل حل شد . من در دو تابع بالا نام متغيري رو كه شي xmlhttp رو توش ذخيره مي كردم هم نام گرفته بودم كه با تغيير نام اونها مشكل حل شده .
  پاسخ
تشکر شده توسط : amir.s


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان