【问题标题】:window.location not setting to new value correctlywindow.location 未正确设置为新值
【发布时间】:2016-05-30 05:40:54
【问题描述】:

我目前在网站上运行的一些 javascript 存在问题。我正在尝试重定向到新页面,但是没有将重定向 url 设置为我传入的页面,它似乎将其连接到现有 url 的末尾。

例如,如果我当前在 www.stackoverflow.com/questions 并想转到 www.stackoverflow.com/questions/ask,则 url 变为 www.stackoverflow.com/questions/www.stackoverflow.com/questions/ask

当我将包含 URL 的变量输出到控制台时,它会正确显示

var nextPage = window.location.hostname + data.redirectUrl + "?confirmationtype=success";
console.log(nextPage);
window.location.href = nextPage;

上面的输出是www.stackoverflow.com.au/questions/ask,但会重定向到www.stackoverflow.com/questions/www.stackoverflow.com/questions/ask

我进行了一些搜索,在许多情况下,它似乎与表单上的 onpost 方法有关,但我看不出这将如何成为我页面上的问题,我正在使用轮询计时器方法来触发这些调用所以页面帖子不应该是一个因素。另外,如果我尝试onpost="return false" 使用相同布局的其他页面无法发布:S

任何帮助将不胜感激。

【问题讨论】:

  • 您的data.redirectUrl 中有什么内容?
  • @AkashAmin redirectUrl 包含 url 路径(不包括主机),所以在我上面的示例中它将是 /questions/ask

标签: javascript .net webforms window.location


【解决方案1】:

没有协议的 URL ("http:") 成为相对 URL - 因此当您尝试设置 window.location 时,它不会执行导航。

类似于:

var nextPage = window.location.hostname + data.redirectUrl + "?confirmationtype=success";
console.log(nextPage);
window.location = "http://" + nextPage;

您可以使用window.location.protocol 代替“http://”,您可以在上面的代码中使用window.locationwindows.location.href

请注意,您的示例显示了一些奇怪的 window.location.href(nextPage); 是函数调用,但 href 不是函数。

【讨论】:

  • 我已经修正了我用 href 做的错字,但我认为你在使用相对 url 的东西,我从本地主机运行,所以我的 url 不包含 http:// 组件网址!我将对此进行测试,看看它是否有效:)
  • 成功!非常感谢,在没有HTTP前缀的情况下,这个方法的行为发生了变化,这很奇怪,发生这种情况是有原因的吗?
  • @MatthewPigram 没有方案(协议)的 url 没有定义如何与服务器通信 - 因此浏览器无法导航到它。您可以在任何浏览器的文档站点上阅读详细信息/找到规范链接 - 即 MDN - developer.mozilla.org/en-US/docs/Web/API/Location
猜你喜欢
  • 2018-01-20
  • 2018-06-22
  • 1970-01-01
  • 2015-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-07
  • 1970-01-01
相关资源
最近更新 更多