我的客户在从ColdFusion 8迁移到ColdFusion 10后遇到错误The 2 parameter of the Left function, which is now -1, must be a positive integer
。该页面在Windows 31和Chrome 7上按预期执行。但是,此错误发生在IE9中,而不是IE7中。 IE9中是否有不同的安全设置禁止处理代码?
有问题的代码片段是:
<!--- Populate the UserInfo struct --->
<cfloop INDEX="item" LIST="#COOKIE.MYELVIS_USERINFO#" DELIMITERS="&">
<cfset delim = #FindOneOf("=",item)#>
<cfif (len(item)-delim)>
<cfset UserInfo[UCase(left(item,delim-1))] = right(item,len(item)-delim)>
<cfelse>
<cfset UserInfo[UCase(left(item,delim-1))] = "">
</cfif>
</cfloop>
当我在其他浏览器中工作时,我说它是代码错误,而不是IE9。有什么想法吗?谢谢。
答案 0 :(得分:3)
也许有他清楚的饼干,他可能有一个来自cf 8的保留,也许两个版本编码不同。看起来,如果可能的话,其中一个值不包含=。
在审核您的代码后,我认为这就是您所需要的。
<cfloop INDEX="item" LIST="#COOKIE.MYELVIS_USERINFO#" DELIMITERS="&">
<cfset delim = #FindOneOf("=",item)#>
<cfif (delim) and (len(item)-delim)>
<cfset UserInfo[UCase(left(item,delim-1))] = right(item,len(item)-delim)>
<cfelse>
<cfset UserInfo[UCase(item)] = "">
</cfif>
</cfloop>