小编典典

每秒执行一次Ajax请求

ajax

我有一个ajax调用到一个php文件。我正在收到结果。现在,我正在研究是否有可能使ajax请求每1秒自动执行一次。我将结果发布到名为的输入字段中hidden。如何每三秒钟执行一次ajax调用而不必调用该函数?

    $.ajax({
            type: 'POST',
            url: 'increment.php',
            data: $(this).serialize(),
            dataType: 'json',
            success: function (data) {
                    $('#hidden').val(data);// first set the value

            }
    });

阅读 623

收藏
2020-07-26

共1个答案

小编典典

您可能要考虑的是服务器发送事件(SSE)

这是一种HTML5技术,JavaScript可以通过该技术“
长期轮询
”服务器端点(您的PHP文件)以查看是否发生了任何更改。长轮询基本上是JS(我不确定它是否使用Ajax或其他技术)在每秒向端点发送一个请求的地方

您可以这样尝试:

#/your_js
var evtSource = new EventSource("increment.php");
evtSource.onmessage = function(e) {
    $('#hidden').val(e.data);
}

要发送数据,您可以进行一个ajax调用,该调用将把更新后的JSON对象发送到服务器,就像您这样:

  $(document).on("click", ".your_object", function(data) {
     $.ajax({
                type: 'POST',
                url: 'increment.php',
                data: $(this).serialize(),
                dataType: 'json'
        });
   });

这只会在您执行事件时打开Ajax请求,并且您的应用将每秒“侦听”响应。如您所知,Ajax长轮询是超级资源密集型的,因此,如果您想要真正的“实时”技术,则最好查看Web套接字的内容,但是无论哪种方式,这将是一个效率更高的系统不仅仅是对所有内容都使用纯ajax

需要注意的是-您必须更改increment.php以处理不同的响应类型

2020-07-26