为什么对于我动态添加到DOM的内容,coldfusion变量/参数是否有效?

fre*_*ent 0 ajax coldfusion jquery coldfusion-8 jquery-mobile

我正在为Coldfusion网站苦苦挣扎,我必须重新设计:

在我的Jquery Mobile/Coldfusion8网站上,用户应该能够从几个不同的页面登录(每个页面都有自己的登录表单 - 不能改变它!)

当用户第一次进入index.cfm页面时,我正在运行:

 <!--- SESSION handler --->
 <cfif Session.loggedIn EQ "No">    
      <CFPARAM NAME="Attributes.Datasource">
      <CFPARAM NAME="Attributes.AdditionalText" DEFAULT="">
      ...
      <CFSET aform = "#CGI.SCRIPT_NAME#">
 </cfif>
Run Code Online (Sandbox Code Playgroud)

这是登录例程的一部分,并设置所有参数和变量.我没有错误,所以一切都一定没问题.该页面包含一个列表,其中包含一个项目:

 <li>#Attributes.AdditonalText"</li>
Run Code Online (Sandbox Code Playgroud)

和登录表格:

 <CFFORM ACTION="#aform#" NAME="LoginForm">
Run Code Online (Sandbox Code Playgroud)

此外,当没有定义会话时,我将重定向到index.cfm,因此所有用户都将在此页面上结束并获取其会话.

问题
当用户从index.cfm转到下一页时,Jquery Mobile将此页面添加到DOM(!).但是在index.cfm上有效的相同参数/变量现在会产生错误(两者都是未定义的).

我不明白这一点.在DOM规模上是不是可以访问Coldfusion参数/变量,所以我通过Ajax动态添加的任何东西,包括对这些参数/变量的引用也会起作用?

我有点迷失在这里做什么.Coldfusion也是新手.

如果我在index.cfm中有这个文本

这是#attributes.additionalText#

它可以工作,但如果我在第二个文件中有相同的片段,它被附加到DOM,完全相同的片段返回#attributes.additioanlText #not undefined ...

问题:
为什么我的动态添加到DOM的内容无法访问或未定义我的变量和属性?如何在全球范围内提供它们?

谢谢你的一些线索!

Dan*_*rts 5

  1. ColdFusion对DOM一无所知,所以把它想象成简单地返回内容然后由浏览器加载或由javascript使用.

  2. 属性不是共享范围.据我所知,它甚至不是CF中的实际范围,而是一个约定(编辑:实际上是自定义标签中的范围),因此如果您在页面之间移动,第1页上设置的任何属性值都不会在第2页上提供.可以使用会话范围来实现其中一些但实际上看起来你只需要确保每个请求都会遇到这个IF语句.执行此操作的两种主要方法是使用OnRequestStart,另一种方法是让所有请求通过index.cfm,并在url上使用action属性指定要包含的代码,要触及的函数等.