php - 有没有非ajax的方式来重复轮询外部js文件?

标签 php javascript ajax

非常感谢您对这个 JS 问题的任何帮助。
现在已经试验了一个小时左右,但还没有遇到任何有效的方法。

<小时/>

当前设置

  • 网站 1:“内容”网站。该站点根据用户是否登录网站 2 显示不同的内容。我在 head 中使用脚本标记,并将 src 设置为位于网站 2 上的 PHP 文件。
  • 网站 2:“用户管理”网站。这使用 PHP 在“javascript”文件中输出用户是否登录(即作为 js 变量)。

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

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

有没有办法在普通的 JavaScript 中做到这一点? (即没有 ajax 或 jq - 我试图保持整个系统小而已知)。

If it's relevant, a friend suggested putting a randomly generated variable at the end of the PHP file name to prevent caching. (He didn't know how it could be repeatedly polled though!)

最佳答案

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

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

其中 someRandomKey 阻止脚本缓存在浏览器中。 script 标记可以有一个 id,因此可以使用 document.getElementById

检索它

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

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;
}

关于php - 有没有非ajax的方式来重复轮询外部js文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4849151/

相关文章:

PHP fatal error : Cannot break/continue

php - 插入多个复选框选择的值

javascript - React Hook新手,为什么使用一次后状态未定义?

jquery - 如何在不指定参数的情况下生成路线

php - 保存表单选择列表滚动条状态

javascript - 如何在显示搜索结果的页面之前显示加载页面?

javascript - ajax调用php后复选框不工作

php - 使用 Orchestra Testbench 测试独立 Laravel 包时出现错误 : Class 'Route' not found in routes. php

javascript - Angular Js 未捕获错误 : [$injector:modulerr] anonymous function

javascript - 基于前两个选项的 3 级选择选项