use*_*580 2 variables coldfusion iframe session scope
我写了2页来测试这个问题,但服务器投诉错误.我不知道为什么,任何人都能解释一下吗?十分感谢.
这是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>
您似乎误解了网页请求的基本概念.
iframe虽然显示为呈现页面的一部分,但实际上是它自己的请求,完全独立于原始页面请求.
会话变量将在它们之间共享(假设您在Application.cfm/Application.cfc中启用了会话),虽然您不太可能通过从父页面设置变量来进入竞争条件(1.cfm )并从iframe(2.cfm)中的子页面读取它们,这不是一个好主意(最佳实践).
在父页面(1.cfm)中设置的请求变量将不可用于iframe(2.cfm)中的页面,因为它是一个单独的请求.
就像请求范围对每个请求是私有的(但是对所有模板和对象共享),"变量"范围对于每个模板是私有的(但在使用cfinclude时在它们之间共享).
虽然您的iframe可以访问自己的 请求和变量范围,但它们与原始页面(1.cfm)的范围不同.
这是编程的一个相当基本的概念,也是ColdFusion的概念.如果您发现难以掌握,您可以考虑购买ColdFusion Web应用程序构建工具包的副本,它可以将您从完整的新手到初级中级水平相当快.