如何避免在 js/ajax 脚本中对应用程序上下文路径进行硬编码
How to avoid hard-coding the application context path in js/ajax scripts
我使用Spring MVC和Javascript/ajax。我对我的 ajax 脚本引用服务器端资源的方式有问题。
假设我有两个页面需要通过 ajax 使用相同的服务器端资源:
第一页的网址是:
-
/myapp/advertisement/28/edit
-
/myapp/signup
假设我的 ajax 脚本需要使用的服务器端资源是:
-
/myapp/geolocation/addressAutocomplete
到目前为止,我已经对应用程序上下文路径进行了硬编码,即在我的 ajax 脚本中 /myapp
。
如果我的应用程序上下文路径发生变化,我需要更新的脚本就全部了。
有没有解决方案?
在包含脚本的 HTML 页面中,您可以放置指向上下文的 HTML base
标记。 请参阅如何获取域 URL 和应用程序名称?
您可以在 http://www.w3schools.com/tags/tag_base.asp 上阅读有关base
标签的信息,其中指出The <base> tag specifies the base URL/target for all relative URLs in a document.
在决定是否使用此标签之前,可能值得阅读是否建议使用
$.ajaxPrefilter()
在所有jQuery AJAX请求前面附加上下文路径。
它可以在页面的<script>
元素中进行配置,其中上下文路径值可用(例如 ${pageContext.request.contextPath}
在JSP中)。
我在外部 JS 文件中使用 AJAX 请求在 JSP 页面中遇到了同样的问题,我通过使用 JSP 中包含 contextPath 的隐藏字段解决了这个问题:
<input type="hidden" id="contextPath" value="<%=request.getContextPath()%>" readonly></input>
在 JS 文件中,获取隐藏字段的值:
var contextPath = $('#contextPath').val();
最后,通过连接上下文路径和相对 url 进行请求调用,如下所示:
$.ajax({
type: "GET",
contentType : "application/json",
dataType: 'json',
url: contextPath + '/home/reporting',
success: function(data) {
}
});
希望这能帮助任何面临相同问题的人
- 将函数的上下文应用于javascript变量
- Javascript:使用绝对路径设置img src
- Twitter Bootstrap typeahead:使用“this”获取上下文/调用元素
- 如何在d3.js中返回路径的y坐标
- 使用JQuery的动态上下文菜单
- 复制图像路径以单击它
- 从模块内部访问Express装载路径
- JS文件的路径正在消失
- 使用onclick绘制SVG路径
- jpm的默认Firefox路径没有'不起作用
- 有没有一条清晰的路径,我可以实现一个在 ScalaJS + React 中广泛使用上下文的 React 组件
- 从 JavaScript 获取上下文路径
- Angular JS:如何为通过$http的所有调用设置上下文路径
- 如何避免在 js/ajax 脚本中对应用程序上下文路径进行硬编码
- 了解AngularJS中的域和上下文根url路径
- d3.js/CoffeeScript:访问mouseover中类和路径的执行上下文(this)
- 从javascript代码中获取服务器上下文路径中的图像
- 如何定义Node.js应用程序上下文路径
- 是否有可能使用localstorage与上下文每路径像cookie
- 摆脱在外部JavaScript文件中硬编码Web应用程序的上下文路径