2014-05-03 87 views
0

我试图使用ajax函数显示数据库值。当我向数据库表中添加新行时,它不会立即显示记录。我必须刷新我的页面。然后只显示最近的日志细节。我认为我有一个Ajax编码的问题。我是ajax的新手。有人帮我解决我的问题..数据库记录显示没有使用ajax刷新页面

function updateDriver(event) 
{ 
    $(".panel a").each(function(){ 
     if($(this).hasClass("active")) 
     $(this).removeClass("active"); 
     }); 


    $(this).addClass("active"); 
    ajaxObj.options.previousDriver = ajaxObj.options.data['did']; 
    ajaxObj.options.data = {'aid':'<?=$agent_id?>','did': event.data.did}; 

    //Ajax call for Driver Log Update; 

    //function refreshEachMinute() { 
     $("#RecentLog").html('Loading...'); 

     $.ajax({ 
       url: "<?=LOAD_LOG?>/",//The resource that delivers loc data. 
       method: 'post', //data method 
       dataType:'html', 
       data: { aid: "<?=$agent_id?>", did: event.data.did }, 
       success: function(data) 
       { 
        $('#RecentLog').html(data); 
       }, 
       error: function() 
       { 
        $('#RecentLog').html('<p>No Entries</p>') 
       } 

     }); 
    //} 
    //setInterval(refreshEachMinute, 200); 

} 

PHP

case LOAD_LOG: 

    if(!isset($_POST['aid'])) 
    die(); 

      $agent_id = $_POST['aid']; 
      $driver_id = $_POST['did']; 

      $sql = "SELECT * FROM ".TBL_DRIVER_LOG." where driver_id='$driver_id' ORDER BY id DESC"; 
      $log_data = asort_result_array($sql); 
      $driver_log =""; 
      if(count($log_data)) 
      foreach($log_data as $log) 
      { 
       extract($log); 

       $ago = TimeAgo($date_of_update);     
       echo '<p> 
       <span>'.$ago.', @ '.$average_speed.'km/hr</span><br> 
       <span style="font-size: 13px; font-weight: normal;">'.$current_place.'</span> 
       </p> 
       <hr class="tabhr">'; 

      } 
      else 
      echo "No Entries"; 



     exit(); 
+0

使用的setTimeout来代替setInterval的?我的意思是有任何请求这个Ajax的点击事件? – Jai

+0

@jai:我已经更新了我的ajax代码.. – Karuppiah

回答

1

数据库无法触发JavaScript函数。您必须每隔几个间隔从客户端执行此操作。你可以使用window.setInterval

window.setInterval(function(){ 
    //your ajax function. 
}, 200);//every 200 milliseconds 
+0

但是,它总是刷新一个内容(每200毫秒)... – Karuppiah

0

看起来你正试图从同一页面做到这一点?尝试将你的PHP分成不同的文件。当您附加LOAD_LOG查询字符串并刷新页面时,您说它只显示这些条目,所以这表明我的案例陈述基本上是写整个页面。

如果你创建一个单独的PHP文件,比如说'loadlog.php',那么你可能会获得更多的成功,那么你可以用你的/ path/to/loading.php替换你的ajax中的url选项。

+0

我有'case LOAD_LOAG:'在单独的页面中。不在同一页面。 – Karuppiah

+0

啊,是的,抱歉,看着它太快,并认为你作为查询字符串追加到同一页面。 – jme11

0

除了什么besabestin说...

u能,如果你想让它你将如何调用这个AJAX只执行一次

window.setInterval(function(){ 
    //your ajax function. 
}, 200); 
相关问题