Javascript 修改 URL 并分配 URL,而不使用源作为父级
Posted
技术标签:
【中文标题】Javascript 修改 URL 并分配 URL,而不使用源作为父级【英文标题】:Javascript to modfiy URL and assign the a URL without using the origin as a Parent 【发布时间】:2016-05-14 13:33:42 【问题描述】:我有这个脚本,它以字符串的形式向服务器发送值以更改设备上的 ipv4 信息需要一些帮助,在发布请求成功后自动将 URL 更改为新地址,而不使用源作为父 URL .比如 window.location.replace(myUrl);
我收到http://192.168.10.128/192.168.10.125
其中 125 是新地址。
$.ajax(
type : 'POST',
url : '/ipcfg/ipcfg_set.cgi',
dataType : 'json',
data :
ipv4_addr : addr,
ipv4_mask : mask,
gw_addr : gw
,
success : function()
var myUrl = encodeURI(addr);
window.location.replace(myUrl);
//document.location.href = myUrl;
//location.assign(href, myUrl);
console.log("sucesss");
,
error : function(xhr, type)
console.log("failed" + type, +xhr);
);
【问题讨论】:
试试这个window.location.href = myUrl
How to get browser to navigate to URL in javascript?的可能重复
这不起作用,因为它将使用当前路径作为根地址,更像是目录中的新文件
【参考方案1】:
如果您只是将 192.168.10.125
传递给 location.replace,那么这与您分配 f.e. 几乎相同。 index.html
相反——它指的是当前路径下的“文件”(或文件夹)——这就是为什么http://192.168.10.128/192.168.10.125
是这里唯一的正确结果。
您需要为其添加一个协议前缀——就像您要链接到不同的网站一样,www.google.com
无法按预期工作,您需要使用http://www.google.com
(或https://www.google.com
或//www.google.com
)
所以如果你想让浏览器导航到http://192.168.10.125
,那么你代码中的那一行需要
window.location.replace("http://" + addr);
(在这种情况下应用 encodeURI
会适得其反。)
编辑,解决评论:
我想知道是否可以重定向到新的 URL 而无需重新加载页面。
不,这是不可能的。
这应该很明显,为什么不:如果我可以替换我的域 https://myphishingsite.com
,我之前通过措辞巧妙的电子邮件引诱你进入,在浏览器的地址栏中使用 https://yourrealonlinebankingsite.com
而无需重新加载当前页面,应该不会是好的吧?
(HTML5 History API 允许您替换地址栏中显示的部分内容,但只能从路径组件向右开始。URL 的协议、主机名和端口部分必须保持不变。)
【讨论】:
我试过了,但它更像是一个简单的修复我想知道我是否可以重定向到新的 URL 而无需重新加载页面。以上是关于Javascript 修改 URL 并分配 URL,而不使用源作为父级的主要内容,如果未能解决你的问题,请参考以下文章