我想在AJAX中使用带有FullCalendar JQuery插件的for
循环。
可能吗?
我的代码是
$("#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");
}
};
我能想到两种解决方案。第一个依赖于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'
};
}
}
};
第二个没有,而是使用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'
});
}
});
编辑:基于第二个选项,还有第三个选项,可能比第二个选项稍微优雅一些。
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)
}