根网址javascript

时间:2011-07-31 19:55:37

标签: javascript asp.net asp.net-mvc ajax

我正在研究.Net ASP MVC剃须刀应用程序

服务器上的根网址为“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 个答案:

答案 0 :(得分:25)

在asp.net mvc中,使用razor视图引擎,我在我的布局中得到了这个:

<script type="text/javascript">
 var baseUrl = "@Url.Content("~")";
</script>

这样我们就可以将应用程序基本URL定义为可从任何地方访问的javascript对象。

答案 1 :(得分:1)

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

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

这将作为<root>/Controller/Action

进入

答案 2 :(得分:0)

这个怎么样?

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

是否提供正确的根URL?

答案 3 :(得分:0)

我用这个:

剃须刀:

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",
    ...

它适用于我的机器和服务器。 希望它有所帮助