我正在尝试将所有javascript ajax调用合并到Javascript Revealing Module中。 但是,有一个名为RootPath的全局javascript属性,它使用inpage脚本标记硬编码到View页面中:
var RootPath = '@Url.Content("~/")';
在一个单独的.js文件中,我正在创建从服务器端获取JSON的调用。
var dataService = function () {
var url = RootPath + "API/GetData",
getData = function () {
return $.getJSON(url);
};
return {
getData: getData
};
}();
问题是在Javascript对象中,这个全局RootPath是未定义的。如何在我的对象中获取此全局属性?
答案 0 :(得分:0)
我过去使用过这种方法效果很好:
<base href="@string.Format("{0}://{1}{2}", Request.Url.Scheme, Request.Url.Authority, Url.Content("~"))">
您不需要为每个请求指定它。
答案 1 :(得分:0)
尝试将全局变量放在页面顶部/ layout.cs html;
<html><head>
</script type="text/javascript">
var RootPath = '@Url.Content("~/")';
</script>
<script src="my_jsfiles" type="text/javascript">
<head>
始终可以从页面的所有位置访问顶层的js
答案 2 :(得分:0)
如果你真的想使用那个“全局”的RootPath变量,你可以做的一件事就是这个,
window.rootPath = '@Url.Content("~/")';
(这应该在布局页面中,或者在你知道它比javascript文件首先运行的地方),然后在你的javascript文件上做,
var dataService = function () {
var url = window.rootPath + "API/GetData",
getData = function () {
return $.getJSON(url);
};
return {
getData: getData
};
答案 3 :(得分:-1)
var dataService = function () {
var url = "/API/GetData",
getData = function () {
return $.getJSON(url);
};
return {
getData: getData
};
}();
请注意我已删除RootPath
变量并直接使用var url = "/API/GetData"
..试试这个我认为它应该有效