php - 如何在不刷新的情况下在页面上获得实时信息?

标签 php javascript live jquery

Facebook 推出了一个滚动条,可以向下滚动显示实时新闻。我怎样才能在我的网站上拥有同样的功能?我不喜欢使用 iframe 并刷新它,因为它会 A 闪烁,B 使页面加载图标出现(取决于浏览器)。如何做到这一点?

最佳答案

为此,您需要每隔 X 秒使用 AJAX 获取您正在查找的数据。也称为轮询。

分割如下:每隔 X 秒,我们想要查询数据库以获取新数据。因此,我们将异步 POST 发送到 php 页面,然后返回结果的数据集。我们还声明了一个回调函数(原生于 jQuery),它将传递来自 PHP 的数据回显。

您的 PHP:

if (isset($_POST['action'])){
    if ($_POST['action'] == 'pollNewData'){
        pollNewData();
    }
}

function pollNewData(){
    $term = $_POST['term'];
    $sql = "select * from TABLE where TERM = '$term'";
    $result = get_rows($sql);
    echo json_encode(array('status'=>200, 'results'=>$results));
}

您的前端 JavaScript:

setTimeout(pollForNewData, 10000);

function pollForNewData(){
    $.post('url/ajax.php',{
        action: 'pollNewData',
        term: 'your_term'
    }, function(response){
        if (response.status == 200){
            $.each(response.results, function(index, value){
               $("#container").append(value.nodeName);
            });
        }
    }, 'json');
}

这里发生的事情本质上是您将使用 jQuery 的 ajax 方法异步发布。在 PHP 中触发函数的方式是在帖子中引用一个键值项,描述您想要在 ajax 请求中调用哪个函数。我将此项称为“Acton”,它的值是将为此特定事件调用的函数的名称。

然后,您可以通过回显 json_encoded 数据集来返回后端获取的数据。

在 javascript 中,您每 10 秒就向此 php 函数发布一次信息。发布完成后的回调是 function(response) 部分,其中回显的数据作为 response 传递。然后,您可以将此响应视为 json 对象(因为在函数之后我们将返回类型声明为 json

关于php - 如何在不刷新的情况下在页面上获得实时信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7563310/

相关文章:

php - 按名称排序elasticsearch

javascript - var ball = document.getElementById ("ball");返回空对象?

html - 如何控制 youtube 嵌入直播?

javascript - jquery 实时数据不响应 DOM

以负数作为输入的 PHP 的 pow() 不起作用

php - 将电子邮件地址插入数据库并检查它是否已存在

php - 如何使另一个表中的两个不同的 id 相等?

javascript - antd:需要改变折叠体的背景颜色

javascript - Backbone.js 不会发布到指定的 URL

perl - 从 Windows Live ID 查询中检索 JSON 结果