在开发和生产网站中使用Javascript获取不同的基本网址

时间:2015-08-05 03:21:56

标签: javascript jquery

我使用javascript使用此代码获取基本网址:

alert(window.location.protocol + "//" + window.location.host);

它将在开发站点中显示http://localhost:[port_number]。然后,在部署到生产站点后,它将显示http://dev01

它给了我错误的基本网址,因为主网址是http://dev01/WebApplication1。我可以在代码中添加应用程序名称,因此它将是:

alert(window.location.protocol + "//" + window.location.host + "/WebApplication1");

但是这种方法不实用,因为我必须在开发站点中删除"/WebApplication1"

这种情况有解决办法吗?

3 个答案:

答案 0 :(得分:2)

你能简单地添加一些条件逻辑来附加生产中的子目录吗?

var host = window.location.host,
    path = host === 'dev01' ? '/WebApplication1' : '',
    fullPath = window.location.protocol + '//' + host + path;

alert(fullPath);

答案 1 :(得分:1)

您需要从服务器端执行此操作。

WebApplication1将更改取决于您的IIS虚拟目录设置

让代码适用于开发&生产环境

请尝试以下操作。

Layout.cshtml

中的

<head>
    <script>
        var base_url = '@Request.Url.GetComponents(UriComponents.SchemeAndServer, UriFormat.Unescaped)@Request.ApplicationPath'

        // navigate around the site, base url should be the same
        alert(base_url);
    </script>
</head>

答案 2 :(得分:0)

尝试以下可能有效的代码:

    var patharray=window.location.pathname.split("/");
    alert(window.location.origin+"/"+patharray[1]);

这里window.location.path将为您提供网站的完整路径......