Javascript仅使用一个查询字符串刷新

时间:2013-12-18 14:15:31

标签: javascript html

我有一个页面,它使用javascript自动刷新,并刷新URL中的所有参数,例如。 server / ViewRoom.aspx?RoomID = 5& ConfirmID = 4834我只想保留RoomID参数。

我的代码:

   <script type="text/javascript">
     var timeout = setTimeout("location.reload(true);", 50000); // How often do you want the initial page to refresh?
     function resetTimeout() {
         clearTimeout(timeout);
         timeout = setTimeout("location.reload(true);", 50000); // How often do you want the page to refresh?
     }
   </script>

如何仅选择RoomID查询字符串进行重新加载

2 个答案:

答案 0 :(得分:2)

正如Edmund24所说,你不需要清除超时,因为你正在重新加载页面,所以我们的代码看起来像:

<script type="text/javascript">
  var timeout = setTimeout("location.reload(true);", 50000);
</script>

同样,我们不需要跟踪处理程序ID,因此我们可以忽略存储:

<script type="text/javascript">
  setTimeout("location.reload(true);", 50000);
</script>

Edmund代码的主要问题是,在RoomID查询字符串不是URL中的第一个查询字符串的情况下,这将不会按预期运行。因此,我们需要明确搜索并获取包含“RoomID”的查询字符串:

<script type="text/javascript">
  setTimeout(function () {
    var domain = location.href.split('?')[0],
        queryStrings = location.href.split('?')[1].split('&'),
        roomIDqs;

    queryStrings.forEach(function (e, i, a) {
      if(~e.indexOf('RoomID')) roomIDqs = e;
    });

    location.href = domain + roomIDqs;

  }, 50000);
</script>

我还没有测试过这段代码,但这应该是个主意。

注意:

  • 〜.indexOf('other string')是contains()的快捷方式,因为javascript没有内置的contains()方法。
  • Array.foreach(function(e,i,a){}) - 回调函数自动传递当前元素(e),当前索引(i)和完整数组(a)。我们在这里使用e来讨论当前的查询字符串。

答案 1 :(得分:0)

由于重新加载,我认为你不需要清除超时。

<script type="text/javascript">
    setTimeout( function () { location.href = location.href.split('&')[0]; }, 50000);
</script>

上面的代码通过传递修改后的href(先删除后的所有内容)和当前位置的href来模仿refrash