更改URL并使用jQuery重定向


132

我有一些这样的代码,

<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在我的数据库中搜索是用户在put中键入内容并按Enter或button,但是他们总是返回abc.com ?name = abc,所以我认为我可以在Submit事件中触发以将我的url重定向和更改为所需的URL,但它们仍然无济于事。就这样,再次感谢您!
加肯2009年

3
我解释了window.location和window.location.replace之间的区别就在这里stackoverflow.com/questions/846954/...
马蒂亚斯Bynens

Answers:


343

就像其他答案中提到的那样,您不需要jQuery就能做到;您可以只使用标准属性。

然而,看来你似乎不知道之间的区别window.location.replace(url)window.location = url

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

当然,两者都有用例,但在我看来,在这种情况下,您应该坚持使用它们。

PS:您可能http:在JavaScript的第2行之后忘记了两个斜杠:

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

5
但是要非常正确,您应该设置window.location.href而不是window.location。虽然如今两者都可以工作,但是后者是一个对象(当然,不支持在古代IE版本中将字符串分配给它...)
Victor,

1
@Victor [需要引用]
Mathias Bynens

1
:@Victor那没有列出任何古老的IE版本,其中这打破了@ bobince的评论是正确的。stackoverflow.com/a/10016109/96656#comment18225061_10016109
马蒂亚斯Bynens

减1。没有足够的jQuery
VarunAgw

41

告诉你事实,我仍然没有得到你所需要的,但是

window.location(url);

应该

window.location = url;

搜索window.location参考将告诉您这一点。


18

jQuery没有为此提供选择,也没有选择。这是完全有效的javascript,jQuery没有理由为此提供包装函数。

jQuery只是基于javascript的库,即使您使用jQuery,仍然可以使用普通的javascript。

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

window.location = url;

反对jQuery并没有解决此问题的方法(尽管这是不必要的过大杀伤力,因此不建议使用)$ jq(window).attr(“ location”,“ yourdomain.com”); 或$(location).attr('href',url);
2013年

9
提议撤消该提议。Pim的响应可以很容易地理解为“ jQuery中没有针对此的特定方法”。否决词汇语义是对这种特权的滥用。
奈杰尔·天使

因为您知道而被投票……这是正确的“ jQuery中没有特定的方法。”,为什么您想要一个丑陋的解决方案,例如:$ jq(window).attr(“ location”,“ yourdomain。 com”);当您可以使用诸如window.location = url;
Rodolfo Abarca

11
var temp="/yourapp/";
$(location).attr('href','http://abcd.com'+temp);

试试这个...作为替代


3

试试这个...

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

这是什么意思:

查找带有id“ abc” 的表单,将其更改attribute为“ action”,然后提交...

这对我有用... !!!


1
大声笑,这是一些有趣的S!我喜欢这个主意。创意点!
Eric Bishard 2014年

-2

你可以不用jquery更简单

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


这是行不通的,我看不到它怎么可能。位置不是全球性。window.location是。编辑:是的。它不起作用,至少在Chrome中不起作用。考虑将您的示例更新为window.location
Shayne

奇怪-在我的chrome,firefox,safari中有效-位置是全局属性-例如,当我在chrome控制台中键入:location = 'https://google.com'然后更改页面-是否在其他浏览器上尝试?
卡米尔·基列夫斯基(KamilKiełczewski)

@Shayne当你输入thisthis.location在控制台-你怎么看?
卡米尔·基列夫斯基(KamilKiełczewski)

仅当“ this”引用窗口时,this.location才起作用。很少有这种情况。显式总是比隐式更好,尤其是当您不希望代码不具有可移植性或可重用性时,您不希望感到惊讶
Shayne

是的,您是对的-但我想知道:为什么在您的浏览器中this没有引用window对象(并且以上代码段不起作用)?(在浏览器的全局上下文中,应将其设置为Windows 对象
KamilKiełczewski19年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.