我有这个脚本,它以字符串形式将值发送到服务器以更改设备上的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的协议,主机名和端口部分必须保持不变。)