ColdFusion是否是线性编写的?为什么这个错误?

时间:2010-07-15 17:24:21

标签: coldfusion

我收到此错误

Element CUSTOMERID is undefined in CLIENT. 
D:\Inetpub\wwwsitecom\wwwroot\rders.cfm:296

在以下面代码开头的页面上:

<cfif NOT CreateObject("component","User.User").IsLoggedIn()>
    <script type="text/javascript">
        window.location.href='/index.cfm';
    </script>
    <cfabort>
</cfif>

<cfif NOT IsDefined("client.customerid")>
    <cfparam name="client.customerid" default="0">
    <script type="text/javascript">
    alert("We're sorry.");
    window.location.href="/logout.cfm";
    </script>
    <cfabort>
</cfif>

和第296行

<cfinvoke component="Account" method="getAccessInfo" returnvariable="getInfo">
  <cfinvokeargument name="customerid" value="#client.CustomerID#">
</cfinvoke>

IsLoggedIn函数有这段代码

<cfif NOT StructKeyExists(client,"customerid")>
  <cfset strIsLoggedIn = 0>
</cfif>

如果ColdFusion线性处理脚本,如何在不处理页面的第一部分的情况下如何获取第296行的未定义的client.customerid?

如果ColdFusion没有线性处理脚本,我该如何防止此错误?

2 个答案:

答案 0 :(得分:0)

确保在cfide中正确设置了客户端变量,并检查它们是否已在Application.cfc文件中启用。

答案 1 :(得分:0)

首先,我会检查您是否在名为<cfoutput>的某处(可能在<cfloop>client标记的隐式作用域中)创建变量。由于CF是一种后期绑定语言,因此可以更改语义,对client.CustomerID的引用将在您的本地client变量中查找,而不是Client范围。

其次,如果你想进行重定向,请 ,使用<cflocation>而不是做这个疯狂的JavaScript重定向。请记住,JavaScript是在客户端执行的,并且浏览器禁用JavaScript是完全可能的(甚至不常见)。 <cflocation>会导致发送HTTP 3xx响应,无论是否启用了JavaScript,它都可以在任何实现HTTP的浏览器中正常运行。它也更加安全,因为在重定向之前,页面的某些部分不可能被刷新到客户端。