提问人:Aaron 提问时间:5/2/2011 更新时间:11/21/2013 访问量:4410
如何使ajax每(n)秒更新一次,而无需使用jquery而是使用javascript?
How make ajax update every (n) number of seconds with out using jquery but using javascript?
答:
5赞
Naftali
5/2/2011
#1
假设您使用的是 jQuery:
var seconds = 5;
setInterval(function(){
$.ajax({
url: 'something.something',
data: 'something'
});
}, seconds * 1000)
没有jQuery:
var seconds = 5;
setInterval(function(){
some_ajax_function();
}, seconds * 1000)
或者正如下面@Felix建议的那样:
var seconds = 5;
some_ajax_function(seconds);
function some_ajax_function(seconds){
..ajax
onsuccess: setTimeout(function(){some_ajax_function(seconds);},
seconds * 1000)
}
评论
0赞
Naftali
5/2/2011
做同样的事情,但在函数中使用您的非 jQuery ajax 方法setInterval
0赞
Felix Kling
5/2/2011
这不是一个好主意。应在前一个请求完成时启动一个新请求,以避免在一个请求花费超过几秒钟(可能发生)的情况下出现意外行为。n
2赞
Oliver M Grech
5/2/2011
#2
它很简单,具有以下功能
window.setInterval(“yourfunctionWithAjaxRequestETC”, time_in_ms);});
享受:)
评论
0赞
Felix Kling
5/2/2011
这不是一个好主意。应在前一个请求完成时启动一个新请求,以避免在一个请求花费超过几秒钟(可能发生)的情况下出现意外行为。n
1赞
bigblind
5/2/2011
#3
首先,我们需要创建我们的 Ajax 请求对象。我们需要考虑不同的浏览器。
var xmlhttp;
if (window.XMLHttpRequest)
{
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
现在,我们将编写函数来发送请求
function askData(){
xmlhttp.open("GET","myinfosource.php",true); // opens a Get request to the url myinfosource.php, and sets the request to asynchronuous.
xmlhttp.send(); //sends the request
}
现在,让我们编写一个事件处理程序,在信息返回时更改 HTML。
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200) //if we reveived data (readystate 4 means that information was received. status 200 is the status of the HTTP request, where 200 means 'ok'.
{
//insert data into the div you want.
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
最后,我们在编写的第一个函数上设置了一个间隔,使其每 x 秒运行一次。
setInterval('askData',10000);
这将刷新您的数据。
我希望你现在明白为什么大多数人使用像jquery这样的框架来使用AJAX。js 框架的主要优点之一是它们可以解决浏览器不兼容的问题,以便您作为开发人员可以专注于手头的任务。
0赞
AVA
9/12/2013
#4
我假设在 web.xml 中配置了一个具有 URL 模式 /UpdateCount 的 servlet 以提供动态数据/内容,并且在 jsp 页面中有一个 div 元素 countStatDiv。
以下代码使用 GET 方法每 30 秒刷新/更新一次 countStatDiv 的内容,可变秒值可根据需要进行更改:
<script>
var request;
var seconds=30;
function getRequestObject(){
setInterval(function() {sendRequest();},seconds*1000);
if (window.ActiveXObject){
return (new ActiveXObject("Microsoft.XMLHTTP"));
} else if (window.XMLHttpRequest){
return(new XMLHttpRequest());
} else {
return (null);
}
}
function sendRequest(){
request = getRequestObject();
request.onreadystatechange = handleResponse;
request.open("GET", "../UpdateCount", true);
request.send(null);
}
function handleResponse(){
if((request.readyState == 4)&&(request.status == 200)){
var serverResponse = request.responseText;
var statCtrl=document.getElementById("countStatDiv");
statCtrl.innerHTML=serverResponse;
}
}
</script>
评论