使用 Javascript 找出 Web 应用程序的主路径
Find out home path of web app using Javascript
我有一个使用 C# 的 .NET MVC5 应用程序,HTML 和 Javascript。
我需要知道主机的 link 以便我可以将特定文件夹中的特定文件发送给用户。
在我的本地计算机上,当我测试和开发应用程序时,应用程序使用的路径如下:
localhost:1234/Home/Scripts/myScript.js
但是,在真正的部署服务器中,路径发生了变化:
www.superhost.com/Apps/MyApp/Home/Scripts/myScript.js
我正尝试在单击按钮时使用以下 JQuery 将此文件发送给用户:
$("a.btn.btn-default").click(function () {
download("/Scripts/myScript.js"); //download is a personal function, unimportant
return false; //prevent browser defualt behavior
});
问题是,当我单击按钮时,我在控制台中收到 erorr - 404 错误,这意味着服务器未找到该文件。
实际上服务器正在搜索路径“/Scripts/myScript.js”中的文件,但文件在"Apps/MyApp/Home/Scripts/myScript.js"中。
如何让我的 javascript 足够聪明以找到正确的路径?
我经常使用的一个解决方案是使用如下方式将站点根 URL 注入页面:
<body data-root="@Url.Content("~/")">
在运行时转换为实际的网站基础 URL。
然后您使用来自所有 jQuery 代码的注入值,使用:
var root = $('body').data("root");
您可以简单地将其添加到任何相关 URL 之前,以使它们正常工作:
$("a.btn.btn-default").click(function () {
download(root + "Scripts/myScript.js"); //download is a personal function, unimportant
return false; //prevent browser defualt behavior
});
注意:这种方法将在路由发生变化的情况下起作用:
例如 /
vs /home/index/
vs /home/
它们都是相同的页面,但不同 URLs
从您的下载路径中删除前导 /
。
您实际上不需要绝对路径(也不需要知道服务器的主文件夹)来访问文件,从您调用下载的页面相对定位它。
注意:如果您使用页面相对路径,则必须确保不要移动执行下载脚本的页面。
我总是在我的布局中使用下一个代码:
<script type="text/javascript">
var rootUrl = "@Url.Content("~/")";
</script>
当我需要它时,我使用例如:
$("a.btn.btn-default").click(function () {
download(rootUrl + "Scripts/myScript.js"); //download is a personal function, unimportant
return false; //prevent browser defualt behavior
});
我有一个使用 C# 的 .NET MVC5 应用程序,HTML 和 Javascript。
我需要知道主机的 link 以便我可以将特定文件夹中的特定文件发送给用户。
在我的本地计算机上,当我测试和开发应用程序时,应用程序使用的路径如下:
localhost:1234/Home/Scripts/myScript.js
但是,在真正的部署服务器中,路径发生了变化:
www.superhost.com/Apps/MyApp/Home/Scripts/myScript.js
我正尝试在单击按钮时使用以下 JQuery 将此文件发送给用户:
$("a.btn.btn-default").click(function () {
download("/Scripts/myScript.js"); //download is a personal function, unimportant
return false; //prevent browser defualt behavior
});
问题是,当我单击按钮时,我在控制台中收到 erorr - 404 错误,这意味着服务器未找到该文件。
实际上服务器正在搜索路径“/Scripts/myScript.js”中的文件,但文件在"Apps/MyApp/Home/Scripts/myScript.js"中。
如何让我的 javascript 足够聪明以找到正确的路径?
我经常使用的一个解决方案是使用如下方式将站点根 URL 注入页面:
<body data-root="@Url.Content("~/")">
在运行时转换为实际的网站基础 URL。
然后您使用来自所有 jQuery 代码的注入值,使用:
var root = $('body').data("root");
您可以简单地将其添加到任何相关 URL 之前,以使它们正常工作:
$("a.btn.btn-default").click(function () {
download(root + "Scripts/myScript.js"); //download is a personal function, unimportant
return false; //prevent browser defualt behavior
});
注意:这种方法将在路由发生变化的情况下起作用:
例如 /
vs /home/index/
vs /home/
它们都是相同的页面,但不同 URLs
从您的下载路径中删除前导 /
。
您实际上不需要绝对路径(也不需要知道服务器的主文件夹)来访问文件,从您调用下载的页面相对定位它。
注意:如果您使用页面相对路径,则必须确保不要移动执行下载脚本的页面。
我总是在我的布局中使用下一个代码:
<script type="text/javascript">
var rootUrl = "@Url.Content("~/")";
</script>
当我需要它时,我使用例如:
$("a.btn.btn-default").click(function () {
download(rootUrl + "Scripts/myScript.js"); //download is a personal function, unimportant
return false; //prevent browser defualt behavior
});