0

forFullCalendarJQueryプラグインを使用してAJAXでループを使用したいと思います。
出来ますか?

私のコードは

$("#frm").attr("action","readCountOfAdv.do");
$("#frm").ajaxSubmit(advCount);

var advCount = {
        success : function(resultData) {
            var result = JSONtoString(resultData);
            var array = result.split(",");

            data = {events: [
                for(i=1 ; i<=arry.length ; i++){
                    if(i < array.length){
                        {
                            title: 'a',
                            start: '2012-05-14'
                        },
                    }else if(i == array.length){
                        {
                            title: 'a',
                            start: '2012-05-14'
                        }
                    }
                }
            ]};
            calendar.fullCalendar( 'addEventSource', data );

        },
        type : "post",
        dataType : "json",
        error : function() {
            alert("error");
        }
    };
4

1 に答える 1

0

私が考えることができる2つの解決策があります。1 つ目は Array.prototype.map に依存しています。一部の古いブラウザーでは利用できませんが、簡単に置き換えられます ( https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/map#Compatibilityを参照) 。

data = {
    events: array.map(function(element,i){
        if(i < array.length){
            return {
                title: 'a',
                start: '2012-05-14'
            };
        }else if(i == array.length){
            return {
                title: 'a',
                start: '2012-05-14'
            };
        }
    }
};

2 つ目は、代わりに Array.prototype を使用します。ややエレガントではありません。

data = { events: [] };
array.forEach(function(element,i){
    if(i < array.length){
        data.events.append({
            title: 'a',
            start: '2012-05-14'
        });
    }else if(i == array.length){
        data.events.append({
            title: 'a',
            start: '2012-05-14'
        });
    }
});

編集: 2 番目のオプションに基づいた 3 番目のオプションがあり、おそらく 2 番目のオプションよりもわずかにエレガントです。

data = {
    events: (function(arrayIn){
        arrayOut=[];
        arrayIn.forEach(function(element,i){
            if(i < arrayIn.length){
                arrayOut.append({
                    title: 'a',
                    start: '2012-05-14'
                });
            }else if(i == array.length){
                arrayout.append({
                    title: 'a',
                    start: '2012-05-14'
                });
            }
        });
        return arrayOut;
    })(array)
}
于 2012-08-21T20:02:14.057 に答える