我写了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 虽然显示为渲染页面的一部分,但实际上是它自己的请求,完全独立于原始页面请求。
session 变量将在它们两个之间共享(假设您在 Application.cfm/Application.cfc 中启用了 session ),尽管您不太可能通过从父页面设置变量来进入竞争状态( 1.cfm)并从 iframe 中的子页面(2.cfm)读取它们,这不是一个好主意(最佳实践)。
父页面 (1.cfm) 中设置的请求变量将无法用于 iframe (2.cfm) 中的页面,因为它是单独的请求。
就像请求范围是每个请求私有(private)的(但共享到所有模板和对象)一样,“变量”范围也是每个模板私有(private)的(但在使用 cfinclude 时在它们之间共享)。
虽然您的 iframe 可以访问自己的请求和变量范围,但它们与原始页面的范围不同( 1.cfm)。
这是一般编程以及 ColdFusion 的一个相当基本的概念。如果您发现很难掌握,您可以考虑购买一份 ColdFusion Web 应用程序构建工具包,它可以让您相当快地从完全新手提升到初级到中级水平。
关于session - 在coldfusion中,什么范围内的变量可以传递到iframe页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1141301/