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,而不使用源作为父级的主要内容,如果未能解决你的问题,请参考以下文章

thinkphp5 怎么修改分页的url

获取 URL 的最后两个参数 - javascript

创建具有多个基本 url 的 Javascript API 类

根据终端分配不同的url地址

获取转义的 URL 参数

在多个页面中搜索类名并使用 javascript 获取该类的 url