1

我遇到了一个奇怪的问题...我设置了一个 cfscript 用于创建数据表 JSON 对象,有时我收到未处理的异常错误“找不到位置 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 运行

有任何想法吗?

4

1 回答 1

1

从发布的评论中得出这一点,听起来您的变量是 unVARed。所有的函数局部变量都需要这样声明,要么使用VAR关键字,要么在作用域中明确界定它们的LOCAL范围。

如果不这样做,变量对于 CFC 实例是全局的,因此在函数之间共享。这听起来像你的问题。

这一切都在文档中:“ CFC 变量和范围”。

于 2013-06-24T19:49:55.890 回答