2009-07-17 89 views
2

我寫了2頁來測試這個問題,但服務器投訴錯誤。我不知道爲什麼,任何人都可以解釋它?萬分感謝。,可以將範圍傳遞給iframe頁面的變量?

這是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> 
+0

答案已經在這裏提供的,因此你們都不錯,但在未來,當你得到一個錯誤,而不是說「有錯誤」,提供實際的錯誤信息會更有幫助。有時候並不是很明顯,這次是什麼錯誤 - 這很難再次猜測 - 所以總是最好提供與位置一樣多的相關信息。乾杯。 – 2011-08-20 10:24:45

回答

8

這似乎是你誤解了網頁請求的基本概念。

iframe作爲渲染頁面的一部分顯示,實際上是它自己的請求,完全獨立於原始頁面請求。

會話變量將在它們中的兩個之間共享(假設您在Application.cfm/Application.cfc中啓用了會話),並且儘管通過設置父頁面的變量不太可能進入競爭狀態(1.cfm)並從iframe(2.cfm)中的子頁面讀取它們,這不是一個好主意(最佳實踐)。

設置在父頁面(1.cfm)中的請求變量將而不是可用於iframe(2.cfm)中的頁面,因爲它是一個單獨的請求。與每個請求(但共享給所有模板和對象)的Request範圍一樣,「變量」範圍對每個模板都是私有的(但在使用cfinclude時共享)。

當你的iframe將有機會獲得自己的要求變量範圍,他們會不會是同一範圍內的原始頁面(1.cfm)。

這是一個相當基本的編程概念,也是ColdFusion的基本概念。如果您發現很難理解,可以考慮購買一份ColdFusion Web應用程序構建工具包,該工具包可以讓您從完全新手到初學者 - 中級水平相當快。

1

你在你的目錄中有一個Application.cfm運行這些測試?

如果將以下行添加到名爲Application.cfm的文件中,並且它應該工作的目錄的根目錄。

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

我測試了兩個文件,並沒有Application.cfm它打破了,它目前它工作正常。

0

我認爲伊恩在正確的軌道上這裏與他觀察到使用會話變量,需要啓用sessionmanagement,但是我認爲使用Application.cfm因爲這是一個有點不合時宜建議。

如果使用CFMX7以上版本的CF,推薦的管理應用程序框架的方法是通過Application。CFC,以及相當於伊恩的代碼如下:

<cfcomponent> 

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

</cfcomponent>