1

jQuery.post() を使用してフォームを Coldfusion.cfc メソッドに投稿し、json データを返すにはどうすればよいですか? リモートで呼び出す cfc メソッドを指定するために、URL またはフォームの値をフォーマットする必要がある特定の方法はありますか? Coldfusion に json データを返すように指示するにはどうすればよいですか?

既存の jQuery/Coldfusion.cfc の質問を検索しましたが、明確にするために探しています。Coldfusion cfc との間の完全なプロセスを示す例が見つかりません。

HTML フォーム:

<!--- Assume: jquery, jquery-ui, sample.js is loaded --->
<p><a href="#" id="openDialog">Open Dialog</a></p>

<div id="myDialog" title="My Dialog" class="dialog">
<form id="myForm">
    <label for="title">Title:</label><br />
    <input type="text" name="title" id="title" value="" /><br />
    <label for="address">Address:</label><br />
    <input type="text" name="address" id="address" value="" /><br />
    <input type="submit" name="save" value="save" />
</form>
</div>

サンプル.js:

jQuery(function ($) {

    var saveUrl = "remote.cfc?method=save";  // Is this the right way??

    // Bind link to open the dialog box
    $('a#openDialog').click(function() {
        $('#myDialog').dialog('open');
    });

    // Configure jQuery UI dialog box and callback methods
    // Is this right??
    $("#myForm").dialog({
        buttons: {
            'Save': function() { 
                $.post(saveUrl, $("#myForm").serialize(), function(result){
                    alert("Result: " + result);
                    }, "json");
                $(this).dialog('close');
               },
            'Cancel': function() {
                $(this).dialog('close');
            }
    });
});

リモート.cfc:

<cfcomponent>

    <!--- If I set the returnFormat to JSON do I need to specify json in the post too? --->
    <cffunction name="save" access="remote" returntype="string" returnFormat="JSON">
        <cfargument name="title" type="string" required="yes">
        <cfargument name="address" type="string" required="yes">
        <cfset var result = structNew()>

        <!--- Do some data manipulation or cfquery here, save to result struct --->

        <cfreturn result>
    </cffunction>

</cfcomponent>

*注: Coldfusion のデバッグを行うと、cfc の戻り値が実際にうまくいかないことがわかったので、これを抑制するかオフにする必要があります。

4

2 に答える 2

1

returnFormat を JSON に設定した場合、投稿で json を指定する必要はありません。後方互換性の理由から、デフォルトで returnformat=WDDX です。

使いやすさが必要な場合は<cfajaxproxy>、さまざまな cf-ajax UI-component タグを確認してください。

この関連する質問を確認してください: AJAX を使用して ColdFusion 関数を呼び出す

于 2010-01-09T01:22:52.527 に答える
1

あなたが持っているものは良さそうに見えますが、どこでエラーが発生し、エラーは何ですか? 明白なエラー メッセージがない場合、私が最初に行うことは、リモート メソッドでログ ステートメントをスローし、呼び出しがサーバーに対して行われているかどうかを確認することです。それが真で、最後まで到達した場合は、コールバックに戻ってくるオブジェクトに警告します (既に実行しているようです)。

特定の質問に答えるにremote.fc?method=methodNameは、正しい URL と、データを投稿している場合は、タイトルなどがあるはずなので、問題ありません。エラーを受信して​​いる場合、または最終アラートの値が何であるかをエラーとして返信します。

于 2010-01-14T14:45:38.833 に答える