是否有非ajax方式重复轮询外部js文件?

时间:2011-01-31 09:12:20

标签: php javascript ajax

非常感谢这个JS问题的任何帮助。
现在已经进行了一个小时左右的试验,并没有遇到任何可以解决问题的事情。


当前设置

  • 网站1:'内容'网站。此站点根据用户是否登录到网站2显示不同的内容。我在头部使用脚本标记,src设置为位于网站2上的PHP文件。
  • 网站2:'用户管理'网站。无论用户是否登录(即作为js var),这都使用PHP在'javascript'文件中输出。

<小时/> 目前,当用户在网站1上加载页面时,此设置可用于检查用户是否登录到网站2系统。

然而,我不想一次性检查,而是希望每2秒轮询一次网站2上的PHP文件,看看登录状态是否已经改变。

有没有办法在vanilla javascript中执行此操作? (即没有ajax或jq - 我试图保持整个系统的小而且已知)。

  

如果相关,朋友建议在PHP文件名的末尾放置一个随机生成的变量以防止缓存。 (他不知道怎么可以反复调查!)

2 个答案:

答案 0 :(得分:4)

我想您可以创建一个间隔函数来更改页面中脚本元素的src属性吗?

setInterval(
  function(){
    myscript.src = '/urltophp?'+someRandomKey;
  }, 2000);

someRandomKey阻止脚本在浏览器中缓存。 script代码可以包含id,因此可以使用document.getElementById

进行检索

要创建随机密钥,这可能会有所帮助:

function randomKey(iLen) {
  var sKey = ''
  , isKey = ''
  , i = 0
  , aRanges = ['48,9', '65,25', '97,25'];
  iLen = !iLen ? 4 : iLen;
  while (i < iLen) {
    var aRange = String(aRanges[Math.round(Math.random() * 2)]).split(',');
    isKey += String(aRanges[Math.round(Math.random() * 2)]) + ',';
    sKey += String.fromCharCode(Math.round(parseInt(aRange[0], 10) +
        (Math.random() * parseInt(aRange[1], 10))));
    i++;
  }
  return sKey;
}

答案 1 :(得分:0)

setInterval(function(){


    $('#divtoloadcontentin').load('urlofscript' + '&nocache=' + Math.random()*Math.random());

}, 5000);

divloadcontentin是他们的唯一原因是因为你可以加载php date()函数来向用户显示页面的最新状态。