同じJavaScriptを使用する必要がある2つの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ページにスクリプトをロードしませんでした。問題をトラブルシューティングする方法についての提案はありますか?
アップデート
私はこの問題の解決策を見つけました。スクリプトを変更する必要があります。スクリプトをfunction()で囲みました。
(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);