ColdFusion的,在什么范围内的变量可以被传递到和iframe页面吗?(in coldfusi

2019-09-19 06:56发布

我写了两页,以测试这个问题,但服务器的抱怨错误。 我不知道为什么,任何人都可以explaint呢? 万分谢意。

这是1.cfm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
        <title>Page Title</title>
    </head>
    <body>
        <cfscript>
            a="aaaaaaaaaaa";
            b="bbbbbbbbbbb";

            request.r1="rrrrrrr111111111";
            request.r2="rrrrrrrr222222222";

            session.s1="sssssssssss11111111111";
            session.s2="sssssssssss2222222222";
        </cfscript>
        <iframe src="2.cfm" width="600" height="400" name="myframe" scrolling="yes">
        </iframe><br />
        variables
        <cfdump var="#variables#">
        request
        <cfdump var="#request#">
        session
        <cfdump var="#session#">
    </body>
</html>

这是2.cfm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
        <title>2.cfm</title>
    </head>
    <body>
        variables
        <cfdump var="#variables#">
        request
        <cfdump var="#request#">
        session
        <cfdump var="#session#">
    </body>
</html>

Answer 1:

好像你误会网页请求的基本概念。

的iframe,而显示作为绘制页面的一部分,实际上是在其自己的要求,完全从原始页面请求分开。

Session变量将他们两个人之间共享(假设你在Application.cfm /启用的Application.cfc会话),尽管这是不可能的,你会得到进入比赛状态,是从母体页面设置变量(1.cfm ),并从一个iframe(2.cfm)子页面阅读它们,只是不是一个好主意(最佳实践)。

在父页面(1.cfm)设置请求变量将不会提供给在iframe(2.cfm)的页面,因为它是一个单独的请求。

像请求范围是专用于每一个请求(但共享给所有模板和对象),在“变量”的范围是私有的每个模板(但使用cfinclude时,它们之间共享)。

虽然你的iframe将有机会获得自己的 要求变量的作用域,他们不会是相同的范围内原来的页面(1.cfm)。

这是编程的一般一个相当基本的概念,也的ColdFusion。 如果你发现很难把握,你可能会考虑拿起ColdFusion的Web应用程序构建工具包的副本,它可以把你从完整的新手到相当快初学者中级水平。



Answer 2:

你有你在运行这些测试目录中的Application.cfm?

如果您添加以下行到一个名为Application.cfm,它应该工作的根目录下的文件。

<cfapplication name="test_app" sessionmanagement="true">

我测试了两个文件,并没有Application.cfm它打破了,它目前它工作正常。



Answer 3:

我认为Ian的正确的轨道上这里与他观察到使用会话变量,需要启用sessionmanagement,但是我认为使用Application.cfm因为这是一个有点不合时宜建议。

如果一个是使用一个版本的CF从CFMX7起,推荐的方法来管理应用程序框架通过的Application.cfc和相当于伊恩的代码如下:

<cfcomponent>

    <cfset this.name = "test_app">
    <cfset this.sessionManagement = true>

</cfcomponent>


文章来源: in coldfusion, variables in what scope can be passed to and iframe page?