2012-12-30 24 views
5

jqueryが新しく、データベースを呼び出してダイアログボックスでデータベースを更新する関数を作成しようとしています。私は以下のコードを生成するために既存のテンプレートを修正し、関数savefeeをjquery関数によって呼び出すことはできません。私のjavascriptコンソールにエラーはありません。どんな助けもありがとうございます。 Application.cfcのでこの機能をjqueryがcoldfusion cfcの呼び出しを使用していません

`

<cfset getfees = new artservice().getfees()> 

<html> 
<head> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js"></script> 

<script> 
$(document).ready(function() { 

    $(".artdiv").click(function() { 
     var initialDiv = this; 

     //based on which we click, get the current values 
     var feeid = $(this).data("fee_id"); 
     var feetitle = $("h2", this).text(); 

     // set form values 
     $("#fee_id").val(feeid);   
     $("#fee_title").val(feetitle); 

     $("#editForm").dialog({ 
      buttons: { 
       "Save": function() { 
        var thisDialog = $(this); 
         $.post("artservice.cfc", { 
         method: 'savefee', 
         fee_id: $("#fee_id").val(), 
         fee_title: $("#fee_title").val() 
         }, 
        function() { 
         //update the initial div 
         $("h2", initialDiv).text($("#fee_title").val()); 
         $(thisDialog).dialog("close"); 
        }); 
       } 
      } 
     }); 
    }); 

}); 
</script> 
<style> 
.artdiv { 
    padding: 5px; 
    margin: 5px; 
    background-color: #80ff80; 
} 
#editForm { 
    display:none; 
} 
</style> 
</head> 

<body> 

<cfoutput query="getfees"> 

    <div class="artdiv" data-fee_id="#fee_id#"> 
     <h2>#fee_title#</h2> 
    </div> 

</cfoutput> 

<div id="editForm" title="Edit Art"> 
    <input type="hidden" id="fee_id"> 
    <p> 
    <b>Name:</b><br/> 
    <input type="text" id="fee_title"> 
    </p> 

</div> 

</body> 
</html> 

`は

CFCは

`

<cffunction name="getfees" access="public"> 
    <cfquery datasource="dsn" name="getfees" maxrows="10">select fee_id, fee_title from table</cfquery> 
    <cfreturn getfees> 
</cffunction> 

<cffunction name="savefee" access="public"> 
<cfargument name="fee_id" required="yes"> 
<cfargument name="fee_title" required="yes"> 
<cfquery datasource="dsn">update table set fee_title = '#arguments.fee_title#' where fee_id = #fee_id#</cfquery> 
</cffunction> 

`

誤差未満でした彼らはCFCへの直接ブラウザによって呼び出されているので、あなたの関数がaccess="remote"に設定する必要があります

public void function onCFCRequest(required string cfcname, required string method, required string args) { 

    return; 
} 
+1

ブラウザコンソールでAJAXリクエストを確認していますか?ステータス200ですか?正しいデータが送信されましたか... ... cfoutput ...と表示されません。コンソールはサーバーとクライアントの問題を絞り込むのに役立ちます – charlietfl

+0

はいAJAX要求が行われています。ステータスは200です。 "onCFCRequest関数に渡されたARGS引数は、application.cfcファイル(これとは別)にあるstring型ではありません。コードは以下のとおりです。私は関数をコメントアウトし、今は正常に動作しています。これがどうして起こったのか'\t public void function onCFCRequest(必須文字列cfcname、必須の文字列メソッド、必須の文字列引数){ \t \t \t return; \t} – eduski

+0

私はもっとフロントエンドですが、coldfusion、特にCFCは、私の強みではありません。しかし、平均的な ''タグを書くことができます!...時々便利なajaxのために – charlietfl

答えて

4

'onCFCRequest'という誤った関数定義のために表示されるエラーです。この関数の3番目の引数は構造体の型ですが、型を文字列として指定しています。したがって、適切な定義は同じようにすべきです。また

public void function onCFCRequest(required string cfcname, required string method, required struct args) { 

    return; 
} 

、もう一つ、あなたがApplication.cfcの中でこの関数を宣言した場合、あなたは手動で「onCFCRequest」内の関数呼び出しを扱っする必要があります。あなたのようなものは、onCFCRequest内のリクエスト関数を再度呼び出す必要があります。

+0

2つのフォローアップの質問 - 1)この機能を必要とさえ宣言していますか? 2)あなたの最後の2つの文が私を失った - 例を挙げることはできますか? – eduski

+0

@eduski - 要求されたcfcメソッドの代わりに* onCFCRequestが呼び出されます。あなたの 'onCFCRequest'関数は空であるので、cfcのリクエストを傍受し、何もしません。要求されたcfcを自動的に呼び出すには、そのコードを 'onCFCRequest'の中に追加する必要があります。 [docsの最後](http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSe821657cd7d6f83f6daaa733122cf6931bb-8000.html)の完全な例を参照してください。 (残念ながら、コードは動的ではありませんが、そのコンセプトを実証しています)。 – Leigh

+1

@ eduski-あなたの質問に答えてください。 1) 'onCFCRequest'を実装し、次にCFCへのAjax、Webサービス、およびFlash Remotingリクエストをより詳細に制御できる場合、どのように使用するかは、あなたの使い方によって異なります。これは、CFCの上にある追加のセキュリティレイヤーとして使用できます。この機能を使用したくない場合は、それほど大したことはありません。 2)リーは既にその質問に答えていると思う。リーさんに感謝します。 –

5

「onCFCRequest関数に渡されるargs引数は、文字列型ではありません」。

+0

実際には2番目のものだけです。 getFees関数は、表示される最初の行であるColdFusionコードで呼び出されています。 –

+0

実際にはcfcomponentもコンテナにする必要があります。さもなければこれは機能のリストです。 – user1261365

+0

URLからデータを直接DBに渡すのではなく、クエリのパラメータを設定してください!それは災害のレシピです。ああ:あなたの関数の変数をVARします。 –

関連する問題