休日が検出されたときに次の関数が true を返すのに問題があります。アラートは正しく発生しますが、結果は常に false を返します。これが可変スコープの問題であることは理解していますが、適切に修正する方法がわかりません。
function isHoliday(date,currentProvince) {
var calDate = new Date(date);
var result = false;
$.get(
"@Url.Content("~/Holidays/HolidayList/?province=")"+currentProvince,
function(data) {
for (h=0; h<data.length; h++) {
holidayDate = new Date(
parseInt(data[h].date.replace("\/Date\(","").replace("\)\/",""))
);
if (holidayDate.getTime() == calDate.getTime()) {
alert("HOLIDAY");
result = true;
}
}
}
);
return result;
}
$.get ステートメントで function(data) のパラメーターを何らかの方法で変更して、変数を出し入れすることはできますか? それとももっと良い方法がありますか?