根URL JavaScript

13

我正在开发一个 .Net ASP MVC Razor 应用程序。

服务器上的根URL为 "myWebSite.com/myApp/"

我需要动态地找到这个URL,以便获得正确的URL来执行一些Ajax调用操作,就像这样:

    $.ajax(
    {
        type: "POST",
        url: root + "/Controller/Action",
        data: ...
    }

我在这里读了一些东西,但我发现它们都不起作用

"document.location.hostname" -> "myWebSite.com"
"location.host"              -> "myWebSite.com"
"window.location.pathname"   -> "/myApp/"

最后一个听起来很有前途,但如果我在网站中导航:

 for an url :  "myWebSite.com/myApp/Controller/Action?1" 
 "window.location.pathname"   -> "/myApp/Controller/Action"
4个回答

27
在ASP.NET MVC中,使用Razor视图引擎时,我在我的布局文件中遇到了以下内容:
<script type="text/javascript">
 var baseUrl = "@Url.Content("~")";
</script>

那么我们可以将应用程序的基本url定义为JavaScript对象,该对象可从任何地方访问。


1

你不需要找到这个。使用相对路径:

    $.ajax(
    {
        type: "POST",
        url: "Controller/Action",
        data: ...
    }

这将作为<root>/Controller/Action进入


1
这实际上是我在本地使用的,但在服务器上我必须写 url: "MyApp/Controller/Action" 这似乎是唯一可行的方式,但每次将其放到服务器上时都需要更改链接,这很麻烦。即使它能够工作,我还需要在Google地图上显示一些图标,为此我还需要正确的根目录。 - Rachid

0

这个怎么样?

var root = "<%=Request.ApplicationPath%>";
alert(root);

它是否提供正确的根URL?


0
我使用这个:
在 Razor 中:
Uri auxBaseUri = new Uri(Request.Url.GetLeftPart(UriPartial.Authority));
Uri baseUri = new Uri(auxBaseUri, Url.Content("~"));   

然后在JS中我使用:

var baseUrl = "@baseUri.ToString()";

$.ajax
({
    type: "POST",
    url: baseUrl + "Controller/Action",
    ...

它在我的电脑和服务器上都能够运行。 希望对你有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接