【问题标题】:How to refresh a page with jQuery by passing a parameter to URL如何通过将参数传递给 URL 来使用 jQuery 刷新页面
【发布时间】:2011-07-11 02:56:03
【问题描述】:

我正在使用 jQuery 刷新我的页面:

location.reload();

这很好用,但我想通过将参数传递给 URL 来刷新同一页面。

如何使用 jQuery 做到这一点?

例如:

如果我的网址是www.myweb.com,我想通过传递这样的参数来刷新它

  www.myweb.com?single

谢谢

【问题讨论】:

  • 更新了我的答案以检查已更改的 URL
  • 如果这确实是您想要的,那么这里的大多数答案都会起作用。但是,如果您真正想要的是使用更改的请求参数重新加载页面,请参阅我的回答:stackoverflow.com/a/33361578/1450294

标签: jquery url parameter-passing


【解决方案1】:

您应该能够通过使用 location.href 来完成此操作

if(window.location.hostname == "www.myweb.com")
   window.location.href += "?single";

【讨论】:

  • 谢谢你,这很好用。但是我在下次刷新时遇到了问题。
  • 第一次 url 是:www.myweb.com/?single 第二次 url 是:www.myweb.com/?single?single 如何避免重复参数?
  • if(window.location.hostname == "www.myweb.com" && window.location.search != '?single') ?
  • 您可以尝试使用href,而不是使用.hostname,因为它将是完整的网址。位置对象的其他选项可在此处找到:developer.mozilla.org/en/DOM/window.location
  • @KillerFish:一个不那么老套的解决方案:stackoverflow.com/a/33361578/1450294
【解决方案2】:

我会像这样使用REGEX.replace

window.location.href = window.location.href.replace( /[\?#].*|$/, "?single" );

【讨论】:

  • 这个方法非常好,因为它不会将参数附加到现有参数!
  • @BennyNeugebauer:不过,有时您会希望保留现有参数。对于这些情况,请参阅:stackoverflow.com/a/33361578/1450294
  • 优雅的解决方案!为了找到这个,我进行了广泛搜索。
【解决方案3】:

您可以使用 Javascript URLSearchParams

var url = new URL(window.location.href);
url.searchParams.set('single','');
window.location.href = url.href;

[更新]:如果需要 IE 支持,请查看此线程:

SCRIPT5009: 'URLSearchParams' is undefined in IE 11

感谢@john-m 谈论 IE 支持

【讨论】:

【解决方案4】:

简洁很重要:我更喜欢window.location = "?single";window.location += "?single";

【讨论】:

    【解决方案5】:

    如果window.location.hash 为空,则不能在不使用正确函数的情况下为 location.href 分配新值(至少在 chrome 中测试过)。

    试试window.location.replace

    if (!window.location.hash) 
        {
            window.location.replace(window.location.href + "?single")
        } 
    

    【讨论】:

      【解决方案6】:

      你可以简单地完成:

      var varAppend = "?single";
      window.location.href = window.location.href.replace(".com",".com" + varAppend);
      

      与提供的其他答案不同,没有不必要的条件检查。如果您正确地设计您的项目,您将让界面做出决策并在触发事件时调用该语句。

      由于您的网址中只有一个“.com”,因此它只会将.com 替换为.com?single。我刚刚添加了varAppend,以防万一您希望将来使用不同类型的 url 变量更容易修改代码。

      另一个注意事项: .replace 通过添加到 href 来工作,因为 href 返回一个包含完整 url 地址信息的字符串。

      【讨论】:

        【解决方案7】:

        单击这些链接可查看这些更灵活、更强大的解决方案。它们是对类似问题的回答:

        这些允许您以编程方式设置参数,并且与针对此问题建议的其他技巧不同,不会破坏已经具有参数的 URL,或者如果其他事情与您认为可能发生的情况不完全一样。

        【讨论】:

          【解决方案8】:
          var singleText = "single";
          var s = window.location.search;
          
          if (s.indexOf(singleText) == -1) {
              window.location.href += (s.substring(0,1) == "?") ? "&" : "?" + singleText;
          }
          

          【讨论】:

            【解决方案9】:

            我正在使用 Jquery Load 来处理这个,对我来说非常有用。 从我的项目中查看我的代码。我需要刷新参数以将 Javascript 变量放入 php

            if (isset($_GET['language'])){
                $language = $_GET['language'];
            }else{
                echo '<script>';    
                echo '  var userLang = navigator.language || navigator.userLanguage;';
                echo '  if(userLang.search("zh") != -1) {';
                echo '      var language = "chn";';
                echo '  }else{';
                echo '      var language = "eng";';
                echo '  }';
                echo '$("html").load("index.php","language=" + language);';
                echo '</script>';
                die;
            }
            

            【讨论】:

            • 或者只是将url添加到dom中,然后使用jquery从参数中拉取。无需完整的 javascript 代码
            【解决方案10】:

            我以前使用过这个确切的东西,我有一个自定义函数,我用于 if 语句,就像 Mark Coleman 提到的那样,并提交了他的答案的较短版本,但只是为了好玩,这是我的版本

            function isOfType(sParam) {
               var sPageURL = window.location.search.substring(1);
               var sURLVariables = sPageURL.split('&');
               var sParameterName = sURLVariables[0];
               return (sParameterName.toLowerCase() == sParam)
            }
            

            一旦你有了这个功能,你就会像这样使用它

            if(!isOfType('single'))
                window.location.href += '?single';
            

            【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2010-11-24
            • 1970-01-01
            • 2021-07-28
            • 2012-10-09
            • 2013-12-13
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多