2014-05-03 90 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); 
相關問題