我们如何解决链接的javascripts中的EL变量?可能吗?有什么选择?
这就是我正在做的事情:
<a id="apiCaller" href="">API Caller </a>
<div id="returnData">
</div>
<script type="text/javascript" src="${pageContext.request.contextPath}/resources/js/api.js" ></script>
在api.js中:(其中$ {pageContext.request.contextPath}无法解析)
$("#apiCaller").click(function(event){
event.preventDefault();
$.ajax({
method: "GET",
url: "${pageContext.request.contextPath}/myAPI",
success: function(returnData){
alert(returnData.data);
$("#returnData").empty.append(returnData.data);
}
});
});
回答(意识到这是一个相关的问题): https://stackoverflow.com/a/5158157/1435070
答案 0 :(得分:2)
我通常在每个页面上包含的内联脚本块中处理此问题。将上下文根放在全局变量中。例如,要在我的博客中获取上下文根,我使用:
<强> base_js.jsp 强>
<script>
var ttRoot = "${pageContext.request.contextPath}" ;
</script>
此片段是通过模板包含在每个页面上的片段的一部分:
<!-- Load Base Javascript Javascript -->
<jsp:include page="/WEB-INF/views/fragments/base_js.jsp" />
然后在构建url时,我使用这个全局变量:
var url = ttRoot + "/secure/resume/manager/skills/" + skillId + "/tags";
答案 1 :(得分:1)
您可以做的是将contextURL的值放在任何span标记或隐藏元素中。
<span id="contextUrl" style="display:none;">${pageContext.request.contextPath}</span>
OR
<input type="hidden" id="contextUrl" value="${pageContext.request.contextPath}" />
在你的JS中,用它的ID或Class属性获取它的值。
$("#apiCaller").click(function(event){
event.preventDefault();
var contextURL = $("#contextUrl").text();
var formUrl = contextURL+'/myAPI';
$.ajax({
method: "GET",
url: formUrl,
success: function(returnData){
alert(returnData.data);
$("#returnData").empty.append(returnData.data);
}
});
});