【问题标题】:Change URL and redirect using jQuery使用 jQuery 更改 URL 和重定向
【发布时间】:2010-10-25 05:17:53
【问题描述】:

我有一些这样的代码,

<form id="abc">
  <input type="text" id="txt" />
</form>

现在我想像这样重定向,

var temp = $("#txt").val();
url = "http://example.com/" + temp;
window.location.replace(url);
// or window.location(url);

jQuery 中是否有解决此问题的方法?它仍然让我拥有url = http://example.com。

【问题讨论】:

  • 非常感谢大家!现在我还是不知道window.location和window.location.replace有什么区别。在我的示例中,我只需要像这样将 url 发布到我的页面:abc.com/abc 让 abc 在我的数据库中搜索 abc 是用户输入的内容,然后按 enter 或按钮,但他们总是返回 abc.com?name=abc 所以我认为我可以在提交事件中触发以重定向并将我的网址更改为我想要的,但他们仍然什么都不做。就是这样,顺便再次感谢您!
  • 我在这里解释了window.location和window.location.replace之间的区别:stackoverflow.com/questions/846954/…

标签: javascript jquery url redirect


【解决方案1】:

正如其他答案中提到的,您不需要 jQuery 来执行此操作;您可以只使用标准属性。

但是,您似乎不知道window.location.replace(url) 和window.location = url 之间的区别。

  1. window.location.replace(url) 将地址栏中的当前位置替换为新位置。调用该函数的页面不会包含在浏览器历史记录中。因此,在新位置上,单击浏览器中的后退按钮将使您返回到您在访问包含重定向 JavaScript 的文档之前查看的页面。
  2. window.location = url 重定向到新位置。在这个新页面上,浏览器中的后退按钮将指向包含重定向 JavaScript 的原始页面。

当然,两者都有自己的用例,但在我看来,在这种情况下,你应该坚持使用后者。

P.S.:您可能忘记了 JavaScript 第 2 行 http: 之后的两个斜杠:

url = "http://abc.com/" + temp;

【讨论】:

  • 但要非常正确,您应该设置 window.location.href 而不是 window.location。虽然现在两者都有效,但后者是一个对象(当然不支持在古代 IE 版本中分配字符串......)
  • @Victor 这没有列出任何旧的 IE 版本。@bobince 的评论是正确的:stackoverflow.com/a/10016109/96656#comment18225061_10016109
  • 减 1. jQuery 不够
【解决方案2】:

实话告诉你,我仍然没有得到你需要的东西,但是

window.location(url);

应该是

window.location = url;

搜索window.location 参考会告诉您。

【讨论】:

    【解决方案3】:

    jQuery 没有这个选项,也不应该有一个选项。这是完全有效的 javascript,jQuery 没有理由为此提供包装函数。

    jQuery 只是 javascript 之上的一个库,即使你使用 jQuery,你仍然可以使用普通的 javascript。

    顺便说一句,window.location 不是一个函数,而是一个属性,你应该像这样设置:

    window.location = url;
    

    【讨论】:

    • 对声称 jQuery 没有这种方法的反对票(尽管这是不必要的矫枉过正,不应该推荐)$jq(window).attr("location","yourdomain.com") ; 或 $(location).attr('href',url);
    • 赞成撤消该反对票。 Pim 的回应很容易理解为“在 jQuery 中对此没有特定的方法”。对词汇语义投反对票是对这一特权的滥用。
    • 赞成,因为你知道......这是正确的“在 jQuery 中没有特定的方法。”,你为什么想要这样一个丑陋的解决方案:$jq(window).attr (“位置”,“yourdomain.com”);当你可以有类似 window.location = url;
    【解决方案4】:
    var temp="/yourapp/";
    $(location).attr('href','http://abcd.com'+temp);
    

    试试这个... 用作替代品

    【讨论】:

      【解决方案5】:

      试试这个...

      $("#abc").attr("action", "/yourapp/" + temp).submit();
      

      什么意思:

      找到一个带有id“abc”的表单,改成attribute,命名为“action”,然后提交...

      这对我有用... !!!

      【讨论】:

      • 大声笑,这很有趣!不过我喜欢这个主意。有创意的积分!
      【解决方案6】:

      如果你真的想用 jQuery 来做这个(为什么?)你应该让 DOM window.location 对象来使用它的功能:

      $(window.location)[0].replace("https://www.google.it");
      

      注意 [0] 告诉 jQuery 直接使用 DOM 对象,而不是封装 DOM 对象的 $(window.location) jQuery 对象。

      【讨论】:

        【解决方案7】:

        你可以这样做:

        var url = "http://example.com/" + temp;
        $(location).attr('href',url);
        

        【讨论】:

          【解决方案8】:

          不用 jquery 也可以更简单

          location = "https://example.com/" + txt.value
          

          function send() {
            location = "https://example.com/" + txt.value;
          }
          <form id="abc">
            <input type="text" id="txt" />
          </form>
          
          <button onclick="send()">Send</button>

          【讨论】:

          • 它不起作用,我看不出它是怎么做到的。位置不是全球性的。 window.location 是。编辑:是的,已验证。它不起作用,至少在 chrome 中不起作用。考虑将您的示例更新为 window.location
          • 奇怪 - 在我的 chrome、firefox、safari 中它可以工作 - 位置是全局属性 - 例如当我在 chrome 控制台中输入:location = 'https://google.com' 然后它会改变页面 - 你在其他浏览器上尝试吗?
          • @Shayne 当你在控制台中输入this 和this.location - 你看到了什么?
          • this.location 仅在“this”指的是窗口时有效。这种情况很少发生。显式总是比隐式好,尤其是当您的代码不可移植或不可重用时,您不想感到惊讶
          • 是的,你是对的 - 但我想知道:为什么在你的浏览器中 this 不引用 window 对象(及以上 sn-p 不起作用)? (在浏览器全局上下文中,它应该设置为 windows object)
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-10-21
          • 2016-04-28
          • 2014-05-25
          • 2012-04-27
          相关资源
          最近更新 更多