将新内容添加到数据库时,希望我的表刷新

时间:2017-03-14 08:32:18

标签: javascript php jquery ajax

目前我有一个获取所需信息的ajax函数,但是我必须在添加新内容时手动刷新它。
我的代码暂时看起来像这样:

<script>
$(function (){

 $(function ajax(){
    $.ajax({
        url: "info.php",
        type:"get",
        datatype: "json",
        success: function(data){
            var clean = jQuery.parseJSON(data);
            $.each(clean, function(i){
                var t = new Date(clean[i]['upplagd']);
                var tid = (t.getDate() + " / "+ (t.getMonth()+1) + " / " + t.getFullYear());
                var table = $('tbody').html();
                $('tbody').html(table + '<tr><td><img src="img/' + clean[i]['bild'] + '"></td><td>' + 
                    clean[i]['titel'] + "<br><b>" + clean[i]['kund'] + "</b></td><td>" + 
                    clean[i]['kommun'] + "</td><td>" + 
                    tid + "</td></tr>");
           }    
    }); 
});
});
</script>

因此,它获取信息并将其打印出来。非常简单。 当AJAX获取其信息时,这是我的php页面。

    <?php
       header("Cache-Control: no-cache, must-revalidate");
       header("Expires: Mon, 26 Jul 1997 05:00:00 GTM");

       $database = "database";
       $server = "localhost";
       $user = "root";
       $pass = "pass";

       $db = mysqli_connect($server,$user,$pass,$database);

       $sql = "SELECT * FROM xterna";
       $array = [];

         $result = mysqli_query($db,$sql) or die(mysqli_error($conn));
             while($row = mysqli_fetch_assoc($result)){
                 $row_arr['id'] = $row['id'];
                 $row_arr['kommun'] = $row['kommun'];
                 $row_arr['kund'] = $row['kund'];
                 $row_arr['titel'] = $row['titel'];
                 $row_arr['upplagd'] = $row['upplagd'];
                 $row_arr['bild'] = $row['bild'];
                 array_push($array,$row_arr);
         }

      $json = json_encode($array, JSON_PRETTY_PRINT);

       echo $json;
       ?>

我知道你可以使用setinterval并调用该函数,但是当我这样做时它会给我所有东西而不只是一个数据。
有人知道一个简单的代码或任何东西吗?

1 个答案:

答案 0 :(得分:0)

如您所知,HTTP不是全双工双向通信通道,因此没有明显的方法通知浏览器数据库有更新,但有多种解决方案:
1-定期检查服务器
在此解决方案中,您会在一定时间后定期发送HTTP请求,服务器将响应更新(如果有)。我不建议这种方法用于性能问题。
2长投票
这基本上是向服务器发送HTTP请求,然后服务器将保持请求打开,直到有新的更新,之后服务器将返回带有更新的响应,然后发送另一个请求等等。 3- Websockets
websockets是一个与HTML5捆绑在一起的新功能,浏览器可以打开一个到服务器的全双工双向通信通道,服务器可以将更新发送到客户端,而无需重复发送HTTP请求来检查新的更新。