将JSON数组返回给jQuery函数

时间:2013-12-30 05:56:08

标签: jquery arrays json datepicker

伙计们需要帮助,我正在使用glDatePicker插件,该插件在特殊日期采用JSON数组。目前我正在为它提取Google日历Feed。但我的代码没有按预期工作。如果我在代码中遗漏了某些内容,请纠正我。

glDatePicker采用以下特殊日期,我正试图从Google Feed动态构建:

specialDates: [
{
    date: new Date(2014,0,8),
    data: { message: 'Sample event'},
    repeatMonth: false
},
{
    date: new Date(2014,0,1),
    data: { message: 'Happy new Year 2014'},
    repeatMonth: false
}]

这是我的HTML

<input type="text" id="simple" style="width: 200px; height: 80px; top: 10px; left: 500px; float: right;" />

这是我的jQuery

jQuery.getJSON("https://www.google.com/calendar/feeds/srinarayanisociety%40gmail.com/public/full?alt=json", function (data, myObject) {
            var rstr = '[';
            jQuery.each(data.feed.entry, function (key, val) {
                rstr += '{';
                var d = new Date(val.gd$when[0]['startTime']);
                rstr += 'date: new Date(' + d.getFullYear() + ',' + d.getMonth() + ',' + d.getDate() + '),';
                rstr += 'data: { message: \'' + val.title.$t + '\'},';
                rstr += 'repeatMonth: false';
                rstr += '},';
            });
            rstr += rstr.slice(0, -1);
            rstr += rstr + ']';
            alert(rstr);
            jQuery('#simple').glDatePicker({
                showAlways: true,
                selectedDate: new Date(),
                specialDates: rstr,
                onClick: function (target, cell, date, data) {
                    target.val(date.getFullYear() + ' - ' + date.getMonth() + ' - ' + date.getDate());
                    if (data != null) {
                        alert(data.message + '\n' + date);
                    }
                }
            });
        });

1 个答案:

答案 0 :(得分:1)

您可以像插件所期望的那样构建JSON对象数组。

var dates = [];
                    $.each(data.feed.entry, function (key, val) {
                        var dateObj= {};    
                        dateObj.date=new Date(val.gd$when[0]['startTime']);
                        dateObj.data = {};
                        dateObj.data.message=val.title.$t;
                        dateObj.data.repeatMonth=false;
                        dates.push(dateObj);
                    });

选中fiddle