使用AJAX自动刷新内容

时间:2012-06-17 14:04:06

标签: javascript ajax function refresh

我正在尝试创建一个显示股票报价的窗格,但是会每10秒自动刷新并且系统地更改(因此请说goog为10,然后是aapl等等。)

这就是我得到的。

function stocksUpdate(latest){
 if (window.XMLHttpRequest)
 {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
 }
 else
 {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
 }
 xmlhttp.onreadystatechange=function()
 {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
 {
  document.getElementById("stocks").innerHTML=xmlhttp.responseText;
 }
 }
 xmlHttp.open("GET","stock.php?latest="+latest+"&x="+Math.random(),true);
 xmlHttp.send();
 }

function stockShow() {
 var symbol = document.getElementById('stocksymbol');
 setInterval(stocksUpdate(symbol), 15);
 }
}   

然后

<body onload="stockShow()">

<div id="stocks">

<h3 id="stocksymbol"></h3>

所以它首先应该获得stocksymbol,看到它是空的并获得第一个股票报价,然后15秒后获得该股票报价并返回下一个等等。

stock.php页面工作正常,但没有显示。我正确地开始这个吗?我应该制作第一个节目然后设置setInterval ??

请注意,h3标签是故意为空的并且在stock.php中占用,所以不要担心它是空的

非常感谢。 尼尔

1 个答案:

答案 0 :(得分:3)

你应该替换

setInterval(stocksUpdate(symbol), 15);

setInterval(function(){
    stocksUpdate(symbol);
}, 15);

截至目前,您正在评估函数stocksUpdate(symbol),然后再将其传递给setInterval。

此外,15是以毫秒为单位的时间,如果您不希望服务器崩溃,请考虑将其提升到更高的值,而不是使用setInterval(这可能导致2个响应以错误的顺序到达)使用stockUpdate函数结束时的setTimeout