javascript - 希望我的表在新内容添加到数据库时刷新

标签 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 并调用该函数,但是当我这样做时,它会为我提供所有内容,而不仅仅是一个数据。
有人知道简单的代码或什么吗?

最佳答案

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

关于javascript - 希望我的表在新内容添加到数据库时刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42781102/

相关文章:

google-chrome - 当将焦点集中到更改回调内的另一个控件时,jQuery 更改事件触发两次

javascript - Datatable-无法使用 tabletools 将新添加的行导出到 CSV 文件

php - 我正在尝试扩展 CodeIgniter 表单验证库

javascript - 在页面中间创建iframe

php - 选择最后一对不同的

php - 重构 php 联系表单

javascript - sweetalert 用于 Laravel 应用程序中的删除警报

javascript - jQuery 不响应单选检查

javascript - 获取 optgroup 中选择选项的索引

javascript - 短 html/css 语法 : <div a b c></div> - any reasons why not?