javascript变量丢失了吗?

时间:2013-03-25 19:05:40

标签: java javascript struts2

我是javascript的新手,我想创建一个日期选择器,使用带有日期列表的json响应突出显示某些日期。

这就是我的尝试:

var dates = [];
dates = getDays();
$(function () {
    $("#datepicker").datepicker({
        beforeShowDay: setHoliDays
    });
    function setHoliDays(date) {
        for (var i = 0; i < dates.lenght; i++) {
            if (dates[i] == date) {
                return [true, "green"];
            }
        }
        return [true, ""];
    }
});
function getDays() {
    var arr = [];
    $.getJSON("/getDates", function (data) {
        $.each(data, function (id, val) {
            arr.push(val);
        });
        return arr;
    });
} 

JSON响应如下:

["2013-03-18T12:00:00","2013-03-19T12:00:00","2013-03-20T12:00:00",
"2013-03-21T11:00:00","2013-03-21T10:00:00","2013-03-21T08:00:00",
"2013-03-25T10:00:00","2013-03-26T08:00:00","2013-03-27T09:00:00",
"2013-03-28T08:00:00","2013-03-28T09:00:00","2013-03-28T10:00:00",
"2013-03-28T11:00:00","2013-03-28T12:00:00"]

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您的getDays函数正在进行异步调用。这意味着在从远程资源实际收到响应之前,该方法返回(在这种情况下没有任何内容)。要使用此响应,您的回调函数将需要创建数组并将其保存在某处(全局变量最简单,但由于我不会在此处讨论,因此肯定不建议使用)。然后你的setHoliDays函数可以使用它。

鉴于您已经在使用全局,您的回调可能会结束:

$.each(data,function(id,val){
  arr.push(val);
});
dates = arr;