【问题标题】:Hidden Iframe Refresh Ajax Alternative?隐藏的 iframe 刷新 Ajax 替代方案?
【发布时间】:2017-03-14 18:58:41
【问题描述】:

我正在使用隐藏的 iframe 在后台刷新页面以保持访问令牌的最新状态,而无需刷新整个页面。这在除 IE 之外的所有浏览器中都非常有效,在 IE 中,当刷新发生时,IE 会从桌面上的任何内容中窃取焦点。所以我的问题是隐藏 iframe 的 ajax 替代方案还是更好的处理方法?这是我的代码:

<iframe Id="hidden" src="https://www.xxxxxxxx.com" 
    style="visibility: hidden;
        position: absolute;
        left: 0; top: 0;
        height:100%; width:0;
        border: none;" 
    onload="refresh()">
</iframe>
<script>
    function refresh() {
        console.clear();
        setTimeout(refreshCookie, 60000);
        function refreshCookie() {
            document.getElementById('hidden').src = document.getElementById('hidden').src;
        };
    };
</script>

【问题讨论】:

  • 其他页面是否在不同的域中?如果是,那么您将遇到跨域问题。

标签: javascript jquery html ajax iframe


【解决方案1】:
const refresh = () => {
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = () => {
        if (this.readyState == 4 && this.status == 200) {
              // Request ok.
        }
    };

    xhttp.open("GET", "YOUR.URL", true);
    xhttp.send();
}    

setInterval(refresh, 10000); //refresh every 10 seconds.

一个基本的 AJAX 请求应该可以。

编辑:--正如 Archer 在您的问题的 cmets 中所说,如果它是跨域的,那么它将不起作用。

【讨论】:

  • 如果您想定期刷新页面,请添加setTimeoutsetInterval
  • 对不起,我对 ajax 很陌生,我应该把 url 和 settimeout 放在哪里?
  • @llerdal - 您需要在上面的 cmets 中检查我的问题。如果页面位于不同的域中,那么这将不起作用。
  • 我编辑了我的答案。是的,(谢谢 Archer),请确保您的请求不是跨域的。
  • @nicovank 好的,谢谢你这很好,你将如何打开多个 url 并发送它们你必须为每个 url 创建一个新的 xmlhttprequest 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-24
  • 2011-06-24
  • 1970-01-01
相关资源
最近更新 更多