我遇到了一个奇怪的问题...我已经设置了一个用于创建数据表JSON对象的cfscript,偶尔我收到一个未处理的异常错误“无法找到位置X的元素”X通常是比我的数组实际上有一个,所以在我的情况下,我有一个数组中的44个元素,表达式错误始终指出“位置45无法找到”
继承了一些代码
/* 44 total items in this array*/
aColumns = ['nd_event_group_id','nd_event_id', 'pref_mail_name', 'request_status_code', "life_gift_pledge_ob_amt", 'activity', ... ];
/* this will return 44 */
iColumnsLen = ArrayLen(aColumns);
...
savecontent variable="rc.aaData" {
for (i=1; i <= rc.qResult.RecordCount ; i++) {
writeOutput('{');
for (col=1; col <= iColumnsLen; col++) {
// the next line is what is referenced by the expression error
// "The element at position 45 cannot be found"
writeOutput('"#aColumns[col]#":#SerializeJSON(rc.qResult[aColumns[col]][i])#');
writeOutput((col NEQ iColumnsLen) ? ',' : '');
}
writeOutput('}');
writeOutput((i NEQ rc.qResult.RecordCount ) ? ',' : '');
}
};
关于这个问题的一个奇怪的部分是,我无法以任何精度重新创建错误,偶尔发生的是命中或错过的事情
此脚本由GET通过AJAX运行
任何想法?
答案 0 :(得分:1)
从发布的评论中得出这个,听起来你有变量unVARed。所有函数局部变量都需要使用VAR
关键字声明,或者在LOCAL
范围内专门设置范围。
如果不这样做,变量对CFC实例是全局的,因此在函数之间共享。这听起来像是你的问题。
这些都在文档中:“CFC variables and scope”。