Javascript 通过AJAX刷新表

Javascript 通过AJAX刷新表,javascript,jquery,ajax,Javascript,Jquery,Ajax,我的任务是向用户提供在应用程序中运行的后端进程的状态。为了显示此状态,我们在数据库中创建了一个状态表,列出已完成、失败或正在进行的任务,如下所示: 为了获取此表的最新状态,我每3秒钟调用一个.ajax()方法,方法是将调用包装在setInterval()方法中。刷新工作如预期,并抓住了程序的最新状态,但这是我在这个问题上的第一个方法,感觉有点野蛮。我想知道是否有更好的方法来实现这一点(例如,一个跨浏览器的解决方案,它使用自己的API模拟实时新闻提要)。有什么想法吗?试试这个 sse是最好的方法

我的任务是向用户提供在应用程序中运行的后端进程的状态。为了显示此状态,我们在数据库中创建了一个状态表,列出已完成、失败或正在进行的任务,如下所示:

为了获取此表的最新状态,我每3秒钟调用一个
.ajax()
方法,方法是将调用包装在
setInterval()
方法中。刷新工作如预期,并抓住了程序的最新状态,但这是我在这个问题上的第一个方法,感觉有点野蛮。我想知道是否有更好的方法来实现这一点(例如,一个跨浏览器的解决方案,它使用自己的API模拟实时新闻提要)。有什么想法吗?

试试这个

sse是最好的方法

试试这个代码

<script>
if(typeof(EventSource) !== "undefined") {
var source = new EventSource("demo_sse.php");
source.onmessage = function(event) {
    //display data in event array.
};
} else {
//Use your old interval if SSE not support in browser
}
</script>

if(typeof(EventSource)!=“未定义”){
var source=neweventsource(“demo_sse.php”);
source.onmessage=函数(事件){
//在事件数组中显示数据。
};
}否则{
//如果浏览器中不支持SSE,请使用旧的间隔
}
在php代码中

<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');//this is important

$arr=['status'=>1,'data'=>$some_array];

$retry="retry: 10000\n";
echo $.retry."data: ".json_encode($arr)."\n\n";
flush();
?>

您需要在显示的开始处添加“data:”,以便知道这是您的数据,“\n\n”是数据的结尾


并添加重试,使其每10000=10秒刷新一次

Hi,欢迎使用堆栈溢出。当你回答时,请在你的答案中加入一个好的解释。仅仅发布一个链接是不够的,因为该链接可能有一天不再存在。今天,没有人使用IE。看起来不错,尽管我想知道客户端或服务器端的时间间隔设置在哪里。至少W3文档没有指定任何内容。@asongdoggy IE是我公司的主要浏览器。无需回避它的兼容性你可以潜在地为IE填充sse()这篇文章的解释方式比我所能解释的要好得多这是一本很棒的书,谢谢