首页 > 解决方案 > 使用 JS 或 jQuery / Ajax 刷新 div 或页面一次

问题描述

因此,我只想为我正在开发的 Flask Web 应用程序重新加载 div 或网页一次,但由于我不太了解 JS,所以我被困在循环中,而不是只刷新一次。

我为什么要这样做?

在进入这个页面之前,用户输入数据并进行计算,然后通过 Selenium,它会做一个网站截图,这个过程需要很长时间,所以当用户点击输入时,它会进行计算,然后在该页面上重定向到新页面一次通过 ajax 调用 selenium 函数在后台提交的 fx,加载 gif 而不是屏幕截图。

目标是,一旦 ajax 路由完成,div 或页面仅重新加载一次以替换 gif 并显示屏幕截图(我通过 Jinja 中的 if/else 完成)希望如果不让我知道,这是有道理的。

这是我要处理的 div

<div id="siteimg" class="c">
{% if a.imgofsite != "" %}
  <img class="c" src="{{ url_for('static', filename = '' + a.imgofsite ) }}" style="overflow: hidden;">
{% else %}
  <img class="c" src="{{ url_for('static', filename = 'img/load.gif') }}" style="overflow: hidden;">
  <h5 class="c" style="overflow: hidden;">RENDERING SCREENSHOT</h5>
{% endif %}


下面是我用来提交表单然后调用它的 JS。

  <script type="text/javascript">
        function img_load() {
        $.ajax({
            type: 'POST',
            url: '/siteimage/{{ a._id }}',
              });
             }
    </script>
    <script>img_load();</script>

我尝试过的:这让我处于一个连续的循环中

location.reload(true);

当我将它添加到 ajax 调用块时,这没有给我任何响应

function refresh() {

setTimeout(function () {
    location.reload()
}, 100);

}

这也让我处于一个连续的循环中

$("#siteimg").load(location.href + " #siteimg");

标签: javascriptjqueryajax

解决方案


如果您使用浏览器sessionStorage来跟踪页面是否在第一次访问后重新加载,该怎么办。

在您的 html 末尾插入以下 js:

<script type="text/javascript">
    if (!sessionStorage.getItem('reloaded')) {
        // Page was not reloaded until last visit: do some stuff
        sessionStorage.setItem('reloaded', true); // remeber the following reload for the next time
        setTimeout(function () {
            window.location.reload();
        }, 100);
    }else{
        // Page was reloaded: clear your flag for the next visit
        sessionStorage.removeItem('reloaded');
    }
</script>

如果您选择显示用户通知重新加载的模式(我认为这是一种好的做法),您应该将setTimeout值从100增加到 Maybe 2500

您可以在这里尝试(带有额外的控制台输出): http: //fiddle.bplaced.net/53414316/

编辑:

再次阅读您的问题后,您需要的是一个ajax请求。重新加载您的网站只是一种解决方法。

尽管我的解决方案应该满足您的要求-安德森的回答是您应该寻找的。


推荐阅读