【问题标题】:database records show without refreshing the page using ajax数据库记录显示而不使用ajax刷新页面
【发布时间】:2014-05-03 08:13:03
【问题描述】:

我正在尝试使用 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();

【问题讨论】:

  • 你怎么称呼这个ajax?我的意思是有没有请求这个 ajax 的点击事件?
  • @jai: 我已经更新了我的 ajax 代码..

标签: javascript php jquery ajax callback


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    看起来您正尝试从同一页面执行此操作?尝试将您的 PHP 分成不同的文件。当您附加 LOAD_LOG 查询字符串然后刷新页面时,您说它只显示这些条目,所以这向我表明您的 case 语句基本上是在编写整个页面。

    如果您创建一个单独的 PHP 文件,例如“loadlog.php”,您可能会取得更大的成功,然后您可以将 ajax 中的 url 选项替换为 your/path/to/loading.php。

    【讨论】:

    • 啊,是的,对不起,看得太快了,还以为你是在将查询字符串附加到同一页面上。
    【解决方案3】:

    除了besabestin所说的......

    如果你希望它只执行一次,你可以使用 setTimeout 而不是 setInterval

      window.setInterval(function(){
       //your ajax function.
    }, 200);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-20
      • 2016-09-27
      • 2016-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-15
      • 1970-01-01
      相关资源
      最近更新 更多