我有这个脚本,它以字符串形式将值发送到服务器以更改设备上的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);
                }

            });

        }

最佳答案

如果仅将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历史记录API允许您替换地址栏中显示的部分内容,但是只能从右侧的路径部分开始。URL的协议,主机名和端口部分必须保持不变。)

10-05 20:38
查看更多