我有两个必须使用相同 javascript 的 JSP 页面。该脚本在锚点上附加了一个函数。当用户点击锚点时,该函数将通过控制器和服务层调用数据库操作。
两个 JSP 页面都有这些锚点。因此,如果我可以在两个页面中重用这个脚本会很好。我打算创建一个只有这个脚本的 JSP 页面,并将这个页面包含在两个 jsp 页面中。这是重用 javascript 的好习惯吗?还有其他更好的方法吗?
这是脚本的一个片段:
$(document).ready(function(){
$('a[name*="like"]').click(function() {
var hrefName = $(this).attr("name");
var href = $(this);
$.ajax({
type: "POST",
url: "likeARecipe",
data: 'recipeId=' + $(this).attr("title") + '&operation=' + $(this).attr("name"),
success: function() {
if(hrefName == 'unlike')
{
$(href).attr("name","like");
$(href).text("like");
}else {
$(href).attr("name","unlike");
$(href).text("unlike");
}
}
});
return false;
});
});
更新
我决定将脚本放入 common.js 脚本中。我将此脚本放在 scripts/common.js 下。
我使用标签来呈现这个脚本的 URL。
<spring:url value="/resources/scripts/common.js" var="common_js" />
<script src="${common_js}" type="text/javascript"><jsp:text/></script>
我通过在上下文文件中指定这些资源来配置 spring 来读取这个脚本:
<resources location="/, classpath:/META-INF/web-resources/" mapping="/resources/**"/>
但是,spring 没有在 JSP Pages 中加载脚本。关于解决问题的方法有什么建议吗?
更新
我找到了解决这个问题的方法。我必须修改脚本。我将脚本包含在一个函数()中:
(function(){
alert("test");
$(document).ready(function(){
$('a[name*="like"]').click(function() {
var hrefName = $(this).attr("name");
var href = $(this);
$.ajax({
type: "POST",
url: "likeARecipe",
data: 'recipeId=' + $(this).attr("title") + '&operation=' + $(this).attr("name"),
success: function() {
if(hrefName == 'unlike')
{
$(href).attr("name","like");
$(href).text("like");
}else {
$(href).attr("name","unlike");
$(href).text("unlike");
}
}
});
return false;
});
});
})(jQuery);