4

コールドフュージョンからjsonリターンを取得し、jqueryで表示する方法が必要です。最初の結果を正常に表示できますが、1つ以上のレコードが戻ってきた場合、スタックします。これが私のcfcです。

<cfquery name="users" datasource="#thedb#">
In this query I can get 1 record to 25 or even more results         
</cfquery>

これがjqueryへの私の出力です。これがこれを行うのに良い方法かどうかはわかりませんが、....これが私が現在複数のレコードを処理する方法です。

<cfset var user = structNew()/>

<cfset thenumber = 1>   
        <cfloop query="users"> 
        <cfset user["newrequestor#theNumber#"] = users.requestor/>
        <cfset user["newrequestorusername#theNumber#"] = users.requestor_username/>
        <cfset user["newrequestorphone#theNumber#"] = users.requestorphone/>
        <cfset user["newrequestoremail#theNumber#"] = users.requestoremail/>
        <cfset user["newthedate#theNumber#"] = users.thedate/>
        <cfset user["newapproved#theNumber#"] = users.approved/>
        <cfset user["newcomments#theNumber#"] = users.comments/>
        <cfset user["newviewed#theNumber#"] = users.viewed/>
        <cfset thenumber = thenumber + 1>
        </cfloop>

<cfreturn user>

CFCの終わり

これが私のjqueryです。最初のレコードを取得するように手動で設定しています...すべてのレコードを返すためにループする方法がわかりません。

ここで、引数をcfcに渡して、結果を取得します。よく働く

thedata = instance.getSearch($("#therequestor").val(), $("#fromDate").val(), $("#toDate").val(), $("#theapproved").val(), $("#theroom").val());

次に、jqueryで行を作成して、最初のレコードを処理します。手動設定は動的ではありません。

var new_Return = '<tr id="newReturn"><th style="text-align:left;" id="first">Request Date:</th><td>'+thedata.newthedate1+'</td><td>&nbsp&nbsp&nbsp&nbsp</td><th style="text-align:left;" id="first">Requestor:</th><td>'+thedata.newrequestor1+'</td><td>&nbsp&nbsp&nbsp&nbsp</td><th style="text-align:left;" id="first">Approved:</th><td>'+thedata.newapproved1+'</td><td>&nbsp&nbsp&nbsp&nbsp</td><th style="text-align:left;" id="first">Viewed:</th><td>'+thedata.newviewed1+'</td></tr>';
        $("#theReturnFormTable").append(new_Return)

divタグに最初の結果を表示します。複数のレコードがある場合、どのようにループしますか。例thedata.newrequestor1は私の最初のレコードです。

それならもっとたくさん持つことができます

thedata.newrequestor2は私の2番目ですthedata.newrequestor3は私の3番目などです

jqueryでこれをどのように処理できますか、またはcoldfusion cfcで別の方法で開始する必要がありますか?

4

3 に答える 3

7

リモート関数を呼び出すだけで、ColdFusion にクエリ オブジェクトを JSON にシリアル化させることができますか? (returnFormat="JSON" に注意)

<cffunction name="getUsers" access="remote" returnType="query" returnFormat="JSON">
   <cfquery name="users" datasource="#thedb#">
       In this query I can get 1 record to 25 or even more results         
   </cfquery>
   <cfreturn users>
</cffunction>

JSON フォーマットは次のようになります。

{"COLUMNS":["NEWREQUESTER","NEWREQUESTERUSERNAME"],"DATA":[["1","JOHN DOE"],["2","JIM DOE"]]}
于 2012-04-10T20:34:07.253 に答える
3

ユーザーを配列に格納し、その配列を返します。

<cfset var userArr = arrayNew(1)/>
<cfloop query="users">
    <cfset var user = structNew()/>
    <cfloop list="#users.columnlist#" index="column">
        <cfset user[column] = users[column]>
    </cfloop>
    <cfset ArrayAppend(userArr, user)/>
</cfloop>
<cfreturn userArr />

これにより、次のように JavaScript でオブジェクトの配列が作成されます。

[
    {
        newrequestrr:"foobar",
        newrequestorusername:"foobar",
        ...
    },
    ...
]

更新:コードをもう少し動的にしました。udf ライブラリでカスタム関数を使用して、クエリ構造から行構造体の配列へのこの変換を行い、変数を使用するように変更しました。

于 2012-04-10T20:18:31.387 に答える