[ColdFusion] コンポーネント(4/4)

  • このエントリーをはてなブックマークに追加
  • 人気ブログランキング

ここではオブジェクト指向ではなく、ColdFusion独自の使い方をするものです。

 

1.cfformタグを使ってコンポーネントの関数を呼び出すことができます。
2.cfajaxproxyタグを使って、Javascriptからcfcのメソッドを呼び出すことができます。
3.URLでコンポーネントのメソッドを呼び出すことができます。

 

以下のようなcfcを用意します。

 

●test.cfc

<cfcomponent>
     <cffunction name="getData" access="remote" returntype="array" output="false">
          <cfargument name="data" type="string">

          <cfset var ary = ["aa1","aa2","bb1","bb2","cc1","cc2"]>
          <cfset var qry = QueryNew("")>
          <cfset QueryAddColumn(qry, "fld", "varchar", ary)>

          <cfquery name="qry" dbtype="query">
          select fld
          from qry
          where fld like '#arguments.data#%'
          </cfquery>

          <cfreturn ListToArray(ValueList(qry.fld))>
     </cffunction>
     <cffunction name="getData2" access="remote" returntype="string" output="false">
          <cfargument name="data" type="string">

          <cfreturn SerializeJSON(getData(arguments.data))>
     </cffunction>
</cfcomponent>

まず、cfcをURLで呼び出すテストを行います。

 
cfcでテストをせずにajaxとして利用すると、
cfcがエラーなのか、Javascriptの設定が悪いのか判断がつきませんので、
まずはcfcをURLで呼び出してみましょう。

 

http://○○/test.cfc?method=getData&data=a

 

ブラウザのソースを見てもらうと、wddxPacketタグで、くくられています。

 

 

次にcfformを使ってcfcを呼び出す例です。

 

●test1.cfm

<cfform name="form">
文字入力
<cfinput name="data" type="text" autosuggest="cfc:test.getData({cfautosuggestvalue})">
</cfform>

入力項目に「a」「aa」「b」など入力すると、下に前方一致する文字列が表示されます。

 

 

次にJavaScriptから呼び出す例です。

 

●test2.cfm

<cfajaxproxy cfc="test" jsclassname="testjs">

<cfoutput>
<script type="text/javascript">
<!--
var a = new testjs();
json = a.getData2('a');
eval("e="+json);
for(i in e){
     alert("data="+e[i]);
}
//-->
</script>
</cfoutput>

個人的にはcfajaxproxyタグを使ったことがなかったのですが、
すごくわかりやすいですね。

 
今まではjQueryの$.postを使っていました。

個人的には、やったことがないものもあるので、
あらためてマニュアルを参照することをおすすめします。

 
あらたな発見があるかもしれませんね。

  • このエントリーをはてなブックマークに追加
  • 人気ブログランキング

この記事に関連する記事一覧

最近の投稿
カテゴリー
タグ
アーカイブ
プロフィール