TOSCRIPT  
説明

ColdFusion 変数の値を JavaScript または ActionScript 変数に割り当てる、JavaScript または ActionScript 式を作成します。この関数を使用して、ColdFusion 文字列、数値、配列、構造体、およびクエリーを、同等の変数および値を定義する JavaScript または ActionScript シンタックスに変換することができます。

 
戻り値

指定された ColdFusion 変数値に対応する JavaScript または ActionScript 変数定義を含む文字列

 
カテゴリ

変換関数、拡張可能関数

 
関数のシンタックス
ToScript(cfvar, javascriptvar, outputformat, ASFormat)
 
関連項目

cfwddx、『ColdFusion MX 開発ガイド』の第9章の「WDDX JavaScript オブジェクト」

 
ヒストリ

ColdFusion MX 7: この関数が追加されました。

 
パラメータ

 
使用方法

JavaScript または ActionScript で ColdFusion 変数を使用するには、ToScript 関数が cfoutput 領域内にあり、シャープ記号 (#) で囲まれている必要があります。たとえば、次のコードは、ToScript 関数を使用して ColdFusion 変数を JavaScript 変数に変換します。

<cfset thisString="hello world">
<script type="text/javascript" language="JavaScript">
   <cfoutput>
      var #toScript(thisString, "jsVar")#;
   </cfoutput>
</script>

ColdFusion は、このコードを実行するときに次のコードをクライアントに送信します。

<script type="text/javascript" language="JavaScript">
   var jsVar = "hello world";
</script>

HTML script タグで JavaScript コードを囲む必要があります。cfoutput タグは、script ブロックの内部で使用する必要はありません。このタグでブロックを囲むこともできます。

WDDX 方式の出力により、WDDXRecordset を作成する JavaScript コードが生成されます。その場合、各レコードセットエントリの中で重要なものは列名であり、レコードセットエントリの値は対応するクエリー列エントリの配列です。次のようになります。

WDDXQuery = new WddxRecordset();
col0 = new Array();
col0[0] = "John";
col0[1] = "John";
WDDXQuery["firstname"] = col0;
col0 = null;
col1 = new Array();
col1[0] = "Lund";
col1[1] = "Allen";
WDDXQuery["lastname"] = col1;
col1 = null;

WDDX 方式の出力を使用するには、cf_webroot/CFIDE/scripts/wddx.js スクリプトを最初にロードする必要があります。このスクリプトは、次の行に示すように JavaScript WDDX オブジェクトを定義します。

<script type="text/javascript" src="/CFIDE/scripts/wddx.js script"> </script>

JavaScript での WDDX の詳細については、1339ページ、第9章の「WDDX JavaScript オブジェクト」 を参照してください。

ActionScript 方式の出力により、オブジェクトの配列を作成するコードが生成されます。その場合、配列は行番号でインデックス付けされ、オブジェクトは列名と列値のペアで構成されます。次のようになります。

   ActionScriptQuery = new Array();
ActionScriptQuery[0] = new Object();
ActionScriptQuery[0]['firstname'] = "John";
ActionScriptQuery[0]['lastname'] = "Lund";
ActionScriptQuery[1] = new Object();
ActionScriptQuery[1]['firstname'] = "John";
ActionScriptQuery[1]['lastname'] = "Allen";

ActionScript 方式の配列では、ユーザーが "wddx.js" ファイルを含める必要はなく、Flash 形式フォーム上の ActionScript (たとえば onChange 属性) で使用可能な変数が作成されます。

outputformat パラメータが false の場合に ASFormat を true に設定すると、ToScript は New Array() の代わりに ActionScript の省略形 [] を使用し、New Object() の代わりに省略形 {} を使用します。これらの省略形を使用すると、ActionScript 検証を実行しなくても、ActionScript を cfform 属性に渡すことができます。ASFormat が false の場合、toScript はスクリプトに New Array() と New Object() を生成します。

 

次の例では、ColdFusion 文字列、配列、クエリーオブジェクトを JavaScript 変数に変換した結果を示します。JavaScript コードの文字列および配列も使用します。

<h2>ToScript</h2>

<h3>文字列変数の変換</h3>
<cfset thisString = "これは文字列です。">
<cfoutput>
   <b>ColdFusion の thisString 変数</b><br>
   #thisString#<br>
   <br>
   <strong>ToScript の出力 (thisString, "jsVar")</strong><br>
   #ToScript(thisString, "jsVar")#<br>
   <br>
   <strong>JavaScript スクリプトで、thisString 変数を JavaScript に変換し、
   結果の変数を出力 :</strong><br>
   <script type="text/javascript" language="JavaScript">
      var #ToScript(thisString, "jsVar")#;
      document.write("jsVar in JavaScript is:" + jsVar);
   </script>
</cfoutput>

<h3>配列の変換</h3>
<!--- 1 次元配列を作成および挿入 --->
<cfset myArray=ArrayNew(1)>
<cfloop index="i" from="1" to="4">
         <cfset myArray[i]="これは配列要素です。" & i>
</cfloop>

<cfoutput>
<b>ColdFusion myArray 配列</b><br>
<!--- ColdFusion の myArray 配列の内容を書き込み --->
   <cfloop index="i" from="1" to="#arrayLen(myArray)#">
      myArry[#i#]:#myArray[i]#<br>
   </cfloop>
   <br>
   <strong>ToScript の出力(myArray, "jsArray")</strong><br>
   #toScript(myArray, "jsArray")#<br>
   <br>
   <strong>JavaScript で、myArray を JavaScript 変数に変換し、その内容を書き込み</strong><br>
   <script type="text/javascript" language="JavaScript">
      var #ToScript(myArray, "jsArray")#;
      for (i in jsArray)
      {
         document.write("myArray[" + i + "]:" + jsArray[i] + "<br>");
      }
   </script>
<br>
<h3>クエリーの変換</h3>
ここでは、次のクエリーオブジェクトを WDDX 形式と 
ActionScript タイプの両方の Javascript オブジェクトに変換します。<br>

<!--- データベースクエリーを実行します。 --->
<cfquery name="thisQuery" datasource="cfdocexamples">
   SELECT FirstName,LastName
   FROM employee
   WHERE FirstName = 'John'
</cfquery>
<br>
ColdFusion のクエリー
<cftable query="thisQuery" headerlines="1" colheaders>
   <cfcol align="left" width="9" header="<b>FirstName</b>" text="#FirstName#">
   <cfcol align="left" width="9" header="<b>LastName</b>" text="#LastName#">
</cftable>

<strong>ToScript によって生成される JavaScript (thisQuery, "WDDXQuery"):</strong><br> 
   #toScript(thisQuery, "WDDXQuery")#;<br>
   <br>
<strong>ToScript によって生成される JavaScript (thisQuery, "ActionScriptQuery",
      False):</strong><br> 
   #toScript(thisQuery, "ActionScriptQuery", False)#<br>
   <br>
<!--- WDDX および ActionScript の両形式への変換 --->
<script type="text/javascript" language="JavaScript"> 
   #ToScript(thisQuery, "WDDXQuery")#;
   #ToScript(thisQuery, "ActionScriptQuery", False)#; 
</script>
<!--- 簡潔にするために、この例では JavaScript クエリー変数を使用していません。 --->
</cfoutput>
CFVAR  
ColdFusion 変数です。次のいずれかを含めることができます。
  • 文字列
  • 数値
  • 配列
  • 構造体
  • クエリー
JAVASCRIPTVAR  
ToScript 関数によって作成される JavaScript 変数の名前を指定する文字列です。
OUTPUTFORMAT  
オプションです。構造体およびクエリーについて、WDDX (JavaScript) 方式または ActionScript 方式の出力を作成するかどうかを指定するブール値です。
  • true: WDDX 方式の出力を作成します (デフォルト)。
  • false: ActionScript 方式の出力を作成します。
ASFORMAT  
オプションです。ActionScript の省略形を使用したスクリプトを生成するかどうかを指定する ブール値です。
  • true: New Array() に対しては [] を、New Object に対しては {} を ActionScript の省略形として使用する、新規オブジェクトまたは配列を作成します。ActionScript の省略形を使用すると、ActionScript 検証を実行しなくても、ActionScript を cfform 属性に渡すことができます。
  • false: ActionScript の省略形を使用して、スクリプトの生成時に新規 Object や新規 Array を作成しないでください。代わりに、スクリプトで New Object() や New Array() を生成します (デフォルト)。