0

再設計しなければならない Coldfusion サイトに苦労しています。

私の Jquery Mobile / Coldfusion8 サイトでは、ユーザーはいくつかの異なるページからログインできるはずです (それぞれに独自のログイン フォームがあります - これを変更することはできません!)。

ユーザーが最初に index.cfm ページに入ったとき、私はこれを実行しています:

 <!--- SESSION handler --->
 <cfif Session.loggedIn EQ "No">    
      <CFPARAM NAME="Attributes.Datasource">
      <CFPARAM NAME="Attributes.AdditionalText" DEFAULT="">
      ...
      <CFSET aform = "#CGI.SCRIPT_NAME#">
 </cfif>

これはログイン ルーチンの一部であり、すべてのパラメータと変数を設定します。エラーは発生していないので、すべて問題ないはずです。このページには、次の 1 つの項目を含むリストが含まれています。

 <li>#Attributes.AdditonalText"</li>

およびログインフォーム:

 <CFFORM ACTION="#aform#" NAME="LoginForm">

また、セッションが定義されていない場合は、index.cfm にリダイレクトしているため、すべてのユーザーがこのページに行き着き、セッションを取得します。

問題
ユーザーが index.cfm から次のページに移動すると、Jquery Mobile はこのページを DOM(!) に追加します。しかし、index.cfm で有効だった同じパラメーター/変数がエラーを生成するようになりました (両方とも未定義)。

私はこれを理解していません。Coldfusion のパラメーター/変数は DOM スケールでアクセス可能ではないので、Ajax を介して動的に追加していて、これらのパラメーター/変数への参照を含むものはすべて機能しますか?

私はここで何をすべきか迷っています。コールドフュージョン初心者も。

index.cfm にこのテキストがある場合

これは #attributes.additionalText# です

動作しますが、DOM に追加される 2 番目のファイルに同じスニペットがある場合、まったく同じスニペットが #attributes.additioanlText# を未定義として返します...

質問:
動的に DOM に追加したコンテンツで変数や属性にアクセスできない、または未定義になるのはなぜですか? グローバルスコープでそれらを利用できるようにするにはどうすればよいですか?

手がかりをありがとう!

4

2 に答える 2

5
  1. ColdFusion は DOM について何も認識していないため、DOM は単純にコンテンツを返し、ブラウザーによって読み込まれたり、JavaScript によって使用されたりすると考えてください。

  2. 属性は共有スコープではありません。私の知る限りでは、実際には CF のスコープではなく、規則 (編集: 実際には customtags のスコープ) であるため、ページ間を移動する場合、ページ 1 で設定された属性値はページ 2 では使用できません。これの一部にセッションスコープを使用できますが、実際には、この IF ステートメントがすべてのリクエストでヒットすることを確認するだけでよいようです。これを行う主な 2 つの方法は、OnRequestStartを使用することです。もう 1 つは、含めるコードやヒットする関数などを指定する URL の action 属性を使用して、すべてのリクエストを index.cfm に送信することです。

于 2012-04-27T14:54:15.767 に答える
1

DOMに追加する必要があるものはすべて、ColdFusionを使用してjQueryを書き出し、ページのレンダリング時に必要なDOMオブジェクトにデータを入力することで実行できます。または、着信http呼び出しを直接受け入れ、JSONで必要な値を返すように設定されたColdFusionCFCへのAjaxサービス呼び出しを作成することもできます。

2番目のアプローチをとる方法の簡単な紹介は次のとおりです 。ColdFusion、jQuery、CFCを使用した簡単なAJAX

于 2012-04-27T15:18:55.580 に答える