我想创建一个定期(例如每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请求已正确发送和接收,但不是循环。