2

リモート CFC への AJAX 呼び出しがあり、好きなように JSON でデータを取得しますが、次のようなハードコーディングされたインデックス値で構造インデックスを推測する必要なしにデータを出力するのに問題があります: $('#result' .val( obj.DATA[0][3] );

[3] のようにインデックスをハードコードすると、CFC でクエリを変更すると、AJAX の結果を変更する必要があります。そのため、返されたデータを列名で参照したいのですが、わかりません。これが私の AJAX とリモート CFC の結果です。

$.ajax({
            url: '/app/components/MailingsReport.cfc',
            //POST method is used
            type: "POST",
            //pass the data 
            data: {
                method: "getCreativeByID",
                creativeID: $('#hdnCreativeID').val(),
                datasource: "shopping_cart",
        queryformat: "column"
                 },
            success: function(response){
                var obj = $.trim(response);
        var obj = jQuery.parseJSON(obj);
                //alert("response");
                $('#txtSubject').val( obj.COLUMNS["SUBJECT"][0] );
                }
            }

        });

フロン:

<!---gets the data for the creative--->
    <cffunction name="getCreativeByID" returntype="any" returnformat="JSON" access="remote" output="No">
        <cfargument name="creativeID" required="Yes" type="numeric" />
        <cfargument name="datasource" required="Yes" type="string" />

        <!--- Select creatives and {clickurl} --->
        <cfquery name="qGetCreativeData" datasource="#arguments.datasource#">
            exec sp_get_email_creative @creativeid = #arguments.creativeID#
        </cfquery>

        <cfreturn qGetCreativeData />

    </cffunction>

結果:

これはCFCの結果です

どんな助けでも大歓迎です!ありがとう。

4

2 に答える 2

2

これは、IE8以下を除くすべてで機能します。完全な互換性が必要な場合は、独自のindexOfJSメソッドを作成できます。

$('#result').val( obj.DATA[0][ obj.COLUMNS.indexOf('Creativename') ] );

必要に応じて、このページには、indexOfを直接サポートしていないブラウザーで配列プロトタイプにindexOfを追加する手順があります:http ://www.tutorialspoint.com/javascript/array_indexof.htm

于 2012-09-06T20:36:32.040 に答える
0

また、SerializeJSON(data, true) を使用して、データの各行のキーとして列名を持つ JSON でクエリを返すこともできます。したがって、cfc で returnformat="JSON" を削除し、置き換えます。

JavaScript コードで、返された JSON 文字列のデータ部分を行ごとにループし、列名で値を参照できるようになりました。

于 2012-11-30T15:34:23.300 に答える