window.location未替换但已串联

时间:2018-12-18 08:51:48

标签: javascript

我有此代码:

$(window).ready(function() {
  var url = window.location.href;
  if (url.includes("#/projet/")) {
    projectId = url.substring(url.indexOf("#")+1).split("/").slice(2, 3).toString();
    window.location.href = "projects/" + projectId;
  };
})

我被重定向了,但是window.location没有被替换,只是被串联了。 例如,如果我的网址是localhost:3000/users/212323/dashboard,则在进行JavaScript重定向后,我得到的是localhost:3000/users/212323/projects/123456而不是localhost:3000/projects/123456

我不明白为什么将href串联起来而不是将其替换掉,您有什么主意吗?

2 个答案:

答案 0 :(得分:4)

window.location.href = 'someurl'与单击someurl标签中的<a>的工作方式相同。

使用相对路径时(即开头没有/),您的浏览器会将URL链接到现有URL。

您的情况下,简单的解决方法是在/前面加上

window.location.href = "/projects/" + projectId;

但是请注意,如果将站点移到其他位置,这可能会导致站点不再工作。这就是为什么许多Web框架使用完整URL和某种基本URL来正确获取链接的原因。

答案 1 :(得分:3)

您需要在网址的开头添加另一个 private void getAll() { DataTable table = new DataTable(); table.Columns.Add("Dosage", typeof(int)); table.Columns.Add("Patient", typeof(string)); table.Columns.Add("Drug", typeof(string)); table.Columns.Add("Active", typeof(bool)); table.Columns.Add("ActiveStatus", typeof(Image)); String yesPath = @"C:\temp\Yes.png"; String noPath = @"C:\temp\No.png"; // Here we add five DataRows. You can add condition here to set appropriate image path. table.Rows.Add(25, "Indocin", "David", true,Image.FromFile(yesPath)); table.Rows.Add(50, "Enebrel", "Avil", false, Image.FromFile(noPath)); table.Rows.Add(10, "Hydralazine", "Christoff", false, Image.FromFile(noPath)); table.Rows.Add(21, "Combivent", "Janet", false, Image.FromFile(noPath)); table.Rows.Add(100, "Dilantin", "Melanie", false, Image.FromFile(noPath)); dataGridView1.DataSource = table; } ,否则浏览器会将其解释为当前网址的相对网址。

/

开头的多余window.location.href = "/projects/" + projectId; 告诉浏览器从根URL开始。