Geo*_*phy 0 javascript coldfusion
我在继承的一些代码上收到此错误.我正在运行cf9和jQuery 1.7.
值+(indx + 1)+不能转换为数字.
这是循环
for (var indx = 0; indx < avgPopulationRecordsCount; indx++) {
CloneAvgPopulationItem(indx, '#rc.qGetAP.ID[' + (indx + 1) + ']#');
}
Run Code Online (Sandbox Code Playgroud)
您的错误消息完全准确:"该值+ (indx + 1) +
无法转换为数字."
您的变量rc.qGetAP.ID
是一个查询列(实际上是一个数组),并且您尝试使用字符串(如单引号所示)对其进行索引,CF正在尝试将其转换为行号,但它无法将文本+ (indx + 1) +
转换为数.
这里的问题是代码更少,更多的是了解正在发生的事情:
JavaScript(这就是这个,而不是jQuery)在浏览器中发生,而ColdFusion在服务器上发生.
这是两个独立且不同的环境.
它们不像您尝试的那样交错 - 它们仅通过HTTP请求/响应(或通过WebSockets/etc)进行交互.
简单来说:
有关客户端/服务器和HTTP请求/响应的更完整说明,请参阅讨论该主题的博客文章.
一旦了解了此过程的工作原理,解决方案就是:
1)首先从CF生成所有相关的JS变量(所以你的Ids被翻译成JS数组),你有一行代码在JS循环中调用JS函数CloneAvgPopulationItem.
例如:
<script type="text/javascript">
var AvgPopIds = <cfoutput>#serialiseJson(ValueArray(rc.qGetAP.ID))#</cfoutput>;
for (var index = 0; index < avgPopulationRecordsCount; index++) {
CloneAvgPopulationItem(index, AvgPopIds[index]);
}
</script>
Run Code Online (Sandbox Code Playgroud)
2)解决CF端的循环,这样就可以获得多个调用CloneAvgPopulationItem函数的JS行.
例如:
<script type="text/javascript">
<cfoutput query="rc.qGetAP">
CloneAvgPopulationItem(#rc.qGetAP.CurrentRow#,'#JsStringFormat(rc.qGetAP.Id)#');
</cfoutput>
</script>
Run Code Online (Sandbox Code Playgroud)
重要的是要说明:不要只使用这些代码示例,而是阅读并理解上面链接的关于JavaScript和ColdFusion运行位置的文章 - 整个HTTP请求/响应过程是一个重要的理解,并将避免您在将来遇到类似的问题.
归档时间: |
|
查看次数: |
78 次 |
最近记录: |