我在spring mvc应用程序中有一个javascript日历控件。当用户点击日历控件中的date
时,用户将被重定向到该日期的详细信息页面。问题是除了date
之外,我还希望在网址中传递其他参数。如何在javascript功能中向url添加其他参数?
以下是用于创建仅包含date
作为参数的网址的javascript:
<script type="text/javascript">
$(document).ready(function() {
$("#dayPicker").datepicker({
firstDay: 1,
dateFormat: "yy-mm-dd",
defaultDate: new Date(${calendar.dayMillis}),
onSelect: function(dateText, instance) {
window.location = "${pageContext.request.contextPath}/calendar?day=" + encodeURIComponent(dateText);
}
});
});
</script>
为了说明,这里是生成URL的代码,其中包括JSP中其他两个可选参数(pid
和eid
):
<c:url var="previousLink" value="/calendar">
<c:param name="day" value="${calendar.previousDay}" />
<c:choose>
<c:when test="${pid!=null}">
<c:param name="pid" value="${pid}" />
</c:when>
<c:otherwise></c:otherwise>
</c:choose>
<c:choose>
<c:when test="${eid!=null}">
<c:param name="eid" value="${eid}"></c:param>
</c:when>
<c:otherwise>
</c:otherwise>
</c:choose>
</c:url>
<a href="${previousLink}">Previous</a>
如何更改上面的javascript,以便为pid
和eid
添加参数,当且仅当 pid
或eid
时是not null
?
答案 0 :(得分:1)
这可以通过连接由&
字符分隔的URL参数来完成:
var url = "${pageContext.request.contextPath}/calendar?day=" + encodeURIComponent(dateText);
if (pid) {
url += "&pid=" + encodeURIComponent(pid);
}
if (eid) {
url += "&eid=" + encodeURIComponent(eid);
}
window.location = url;
答案 1 :(得分:0)
注意到您对pid和eid不起作用的评论,您最有可能需要添加jquery括号来获取pid和eid。所以它会是这样的:
var url = "${pageContext.request.contextPath}/calendar?day=" + encodeURIComponent(dateText);
if (${pid!=null}) {
url += "&pid=" + encodeURIComponent(${pid});
}
if (${eid!=null}) {
url += "&eid=" + encodeURIComponent(${eid});
}
window.location = url;
另外,如果您实际上没有将eid或pid添加到模型中,当它为“null”时,它实际上不会为空,因此您可能也无法获得所需的功能。如果您实际上是将eid和pid添加到模型中,那么&#39; null&#39;那么上面应该没问题。但是,如果当eid和pid为空时,你只是将它们全部放在模型之外,你需要检查它:
var url = "${pageContext.request.contextPath}/calendar?day=" + encodeURIComponent(dateText);
if (${! empty pid}) {
url += "&pid=" + encodeURIComponent(${pid});
}
if (${! empty eid}) {
url += "&eid=" + encodeURIComponent(${eid});
}
window.location = url;