定期HTTP GET请求,而不使用“提交”输入

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了定期HTTP GET请求,而不使用“提交”输入相关的知识,希望对你有一定的参考价值。

我想创建一个定期(例如每0.5秒)使用GET方法向服务器发送HTTP请求的html页面,而不使用“form”标记的“Submit”输入。有可能吗?我能怎么做?

答案

使用setTimeout()setInterval()$.ajax()

var getRequest = function () {
    $.ajax({
        url: '/some_url',
        method: 'GET',
        data: {
            // some data
        },
        success: function (data) {
            setTimeout(getRequest, 500);
        }
    });
};
另一答案

我试过这个shtml代码

<html>
  <head>
    <title>Transmit-Receive Demo</title>
    <script type="text/javascript">
      function request_transmit()
        {
          var xhr = new XMLHttpRequest();
          xhr.open('GET', "http://172.23.159.1/input.cgi?input=on&submit=Submit", true);
          xhr.send();
        }
      function my_timer()
        {
          setInterval(request_transmit, 500);
        }
    </script>
  </head>
  <body onload="my_timer();">
    <p>
      Received string:  <!--#input-->
    </p>
  </body>
</html>

请求已正确发送到服务器,但我无法在shtml页面中显示答案。答案由以下块处理:

<p>
  Received string:  <!--#input-->
</p>

其中“#input”是SSI命令。另一个问题是HTTP请求的频率。如果大于500毫秒则没有问题,否则服务器会出现时间错误。

另一答案

我试过这段代码

<html>
  <head>
    <title>Transmit-Receive Demo</title>
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript">
      var getRequest = function() {
      $.ajax({
          url: 'http://172.23.159.1/input.cgi?',
          method: 'GET',
          data: {input=on&submit=Submit},
          success: function(data){setTimeout(getRequest, 500);}
      });
    </script>
  </head>
  <body onload="function();">
    <p>
      Received string:  <!--#input-->
    </p>
  </body>
</html>

HTTP请求已正确发送和接收,但不是循环。

以上是关于定期HTTP GET请求,而不使用“提交”输入的主要内容,如果未能解决你的问题,请参考以下文章

HTTP请求中POST与GET的区别

http请求中get和post请求的区别

http请求方法(GETPOSTHEADOPTIONSPUTDELETETRACECONNECT)

Android传统HTTP请求get----post方式提交数据(包括乱码问题)

如何使用 netty 运行 websocket 服务器而不处理其他类型的 HTTP 请求(如 GET 和 POST)。

HTTP协议-GET/POST请求