我试图写一些代码将通过URL参数循环以单词“层”,然后1,2,3等。例如开始:通过URL动态环参数
http://example.cfm?numLayers=2&layer1=somevalue,123&layer2=someothervalue,456
URL中的图层数量每次都会有所不同。
这是我的代码:
<cfif isDefined("url.numLayers") AND url.numLayers gt 0>
<cfset session.structLayers = structNew() />
<cfloop index="index" from="1" to="#url.numCustom#">
<cfset layerElement = evaluate(url.layer#index#) /><!--- This is where I'm having trouble --->
<cfset arrLayerElement = listToArray(layerElement)>
<structInsert(session.structLayers, arrLayerElement[1], arrLayerElement[2])]>
</cfloop>
</cfif>
我得到上面标线的“无效CFML结构错误”。我没有这样做。
首先,如下所述评价是不必要的。这也是不安全的,所以应尽可能避免。也就是说,你正在使用evaluate()不正确。如果您阅读[文档](http://help.adobe.com/zh_CN/ColdFusion/10.0/Developing/WSc3ff6d0ea77859461172e0811cbec22c24-7f4d.html),则需要包含要评估的表达式的*字符串*。如果要抓取名为url.layer1的变量的值,则需要传入* string *“url.layer1”。您的代码没有传入正确的字符串。 – Leigh 2015-04-03 17:57:25
您的示例显示layer1等于由somevalue和123组成的列表。是您的意图还是仅仅输入了错误?另外,为什么你需要一个结构?你已经有一个列表,cgi.querystring和你的所有数据。 – 2015-04-03 18:30:34