当检测到假期时,我无法让以下函数返回 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 语句中函数(数据)的参数以将变量传入和传出?或者有更好的方法吗?
最佳答案
该函数在ajax调用完成之前返回;这就是 $.get
中的回调的用途,以及为什么这是异步。
如果您想从此 ajax 调用获取结果,那么您需要将其余逻辑连接为此调用的回调,如下所示:
function isHoliday(date,currentProvince, callback) {
var calDate = new Date(date);
$.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");
callback(true);
}
else
{
callback(false);
}
}
});
}
关于javascript - 如何从子函数中更改函数的返回值 (JavaScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10554307/