作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
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/
我是一名优秀的程序员,十分优秀!