2009-07-17 8 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> 

であり、これはあなたがしているディレクトリ内のApplication.cfmを持っていますか 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

答えはここで提供されていますので、あなたはすべていいですが、将来「エラーがありました」というよりエラーが発生したときに、実際のエラーメッセージを提供するとより効果的です。時には、今の時代の何が間違っているのかがはっきりしていないこともあります。それは第二に推測するのが難しいので、可能な限り多くの関連情報を提供することが常にベストです。乾杯。 –

答えて

8

ウェブページリクエストの基本概念を誤解しているようです。

レンダリングページの一部として表示されているiframeは、実際は独自の要求であり、元のページリクエストとは完全に分離しています。

セッション変数は、2つの間で共有されます(Application.cfm/Application.cfcでセッションが有効になっていることを前提とします)。親ページから変数を設定することで競合状態になることはほとんどありません(1.cfm)、iframe(2.cfm)内の子ページからそれらを読み込むと、それはちょうどいいアイデアではありません(ベストプラクティス)。

親ページ(1.cfm)に設定されたリクエスト変数は、別のリクエストであるため、ではなく、のiframe(2.cfm)のページで利用可能になります。

リクエストスコープは各リクエストに対してプライベートですが(ただし、すべてのテンプレートとオブジェクトに共有されます)、「変数」のスコープは各テンプレートに対してプライベートです(ただし、cfincludeを使用すると共有されます)。

あなたのiframeが独自の要求変数スコープにアクセスする必要がありますが、それらは元のページ(1.cfm)と同じスコープではありません。

これは、一般的なプログラミングやColdFusionの基本的な概念です。把握が難しい場合は、初心者レベルから初心者レベルに至るまでかなりの時間を要するColdFusion Web Application Construction Kitのコピーを入手することを検討してください。

1

ですこれらのテストを実行していますか?

Application.cfmというファイルに次の行を追加すると、そのディレクトリのルートが機能するはずです。

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

私はあなたの2つのファイルをテストし、それが正常に動作します提示でのApplication.cfmせず、それは、破りました。

0

セッション変数を使用するためにセッション管理を有効にする必要があるという私の見解ではIanの正しいところにあると思いますが、Application.cfmを使用することは時代遅れです。

CFMX7以降のCFを使用している場合、アプリケーションフレームワークを管理するための推奨される方法は、アプリケーションによるものです。cfc、Ianのコードに相当する:

<cfcomponent> 

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

</cfcomponent> 
関連する問題