質問

私はこの例では、簡易などができます。私はリモート機能:

<cfcomponent output="false">
<cffunction name="Read" access="remote" output="false">
    <cfset var local = {}>

    <cfquery name="local.qry" datasource="myDatasource">
    SELECT PersonID,FirstName,LastName FROM Person
    </cfquery>
    <cfreturn local.qry>
</cffunction>
</cfcomponent>

のjQuery$.ajaxメソッドは、このように順序付けのリストです。

    <!DOCTYPE HTML>
    <html>
    <head>
    <script src="http://www.google.com/jsapi"></script>
    <script type="text/javascript">
    google.load("jquery", "1");
    </script>
    <script type="text/javascript">
    jQuery(function($){
    $.ajax({
            url: "Remote/Person.cfc?method=Read&ReturnFormat=json",
            success: function(data){
                var str = '<ul>';
// This is where I need help:
                for (var I=0; I<data.length; I++) {
                    str += '<li>' + I + data[I][1]+ '</li>'
                }
                str += '</ul>';
                $('body').html(str);
            },
            error: function(ErrorMsg){
               console.log("Error");
            }
        });
    });
    </script>
    </head>
    <body>
    </body>
    </html>

のんの失われは私がループのデータです。うに、jQueryを使$.ajaxによる方法が理解していること$.get$.ポストなエラートラップ.

わからないかJSONから返されるフロン.

役に立ちましたか?

解決

のように見える結果をjson形式(チェックインのドキュメント http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=Tags_f_21.html)."を指定した場合returnformat="json"の関数が返すクエリに対して、ColdFusion列化のクエリをJSONオブジェクトを見つけ、カラム名の配列は、配列のカラムデータ配列.詳しい情報は見SerializeJSON." http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=Tags_f_21.html

この配列(データです。カラムはカラム名の配列.データです。COLUMNS[0]のだと、そのカラムです。データです。データ[0]のだと最初の行を返します。

素敵なコツを使用。ログデータのクロムまたは開いているのがfirebugのコンソールのデータでの構造形式です。

なかったこの試験で必要となります。ん発生の基本的なテーブルからデータです。

$.ajax({
    url: 'Remote/Person.cfc?method=Read&ReturnFormat=json',
    dataType: 'json',
    success: function(response) {
        var str = '<table><tr>';
        var i;
        var j;

        //loop over each column name for headers
        for (i = 0; i < response.COLUMNS.length; i++) {
              str += '<th>' + response.COLUMNS[i] + '</th>';
          }
        }
        str += '</tr>';

        //loop over each row
        for (i = 0; i < response.DATA.length; i++) {
          str += '<tr>';
          //loop over each column
          for (j = 0; j < response.DATA[i].length; j++) {
              str += '<td>' + response.DATA[i][j] + '</td>';
          }
          str += '</tr>';
        }
        str += '</table>';

        $('body').html(str);
    },
    error: function(ErrorMsg) {
       console.log('Error');
    }
});

他のヒント

最も簡単な方法は、視覚的に返されるJSONデータが構成されているかを確認することです。そして、JSオブジェクトを横断することも難しくはありません。あなたはJSONの可視化を試みたことがありますか? http://chris.photobooks.com/json/default.htmする

あなたが必要とするすべてのPERSONIDであれば、あなたにもCFからPERSONIDの配列またはリストを返すことができます。

必要に応じて

それとも、あなたはすべての<li>の生成と、プレーンテキストを返すようにCFを求めることができます。 AJAXを通過したメッセージは大きくなりますが、あなたは維持するために、以下JSコードを持っています。 CFMLは、権利を維持する方が簡単ですか? :)

?私は、ColdFusionに非常に精通していないよしかし、あなたはJSONにデータ型を設定しようとしている。

$.ajax({
    url: 'Remote/Person.cfc?method=Read&ReturnFormat=json',
    dataType: 'json',
    success: function(response) {
        var data = response.DATA;
        var str = '<ul>';

        for (var I = 0; I < data.length; I++) {
            str += '<li>' + I + data[I][1] + '</li>';
        }

        str += '</ul>';

        $('body').html(str);
    },
    error: function(ErrorMsg) {
       console.log('Error');
    }
});

:あなたが戻って取得しているデータは以下のようなものに似ている場合は、

これは動作するはずです

[["PersonID1", "FirstName1", "LastName1"],["PeronID2", "FirstName2", "LastName2"]] .. etc
上記の仕事、あなたの要求によって返される生のJSONデータを示すことができていない場合場合は、

私は簡単にそれを修正することができる必要があります。

また、必ずそれはあなたのコードではなかった場合は、しかし、あなたがforループで行の末尾にセミコロンを逃した。

オプション:

あなたの場合、私はこう言います

<cffunction name="keywordAutoComplete" access="remote" 
            returntype="struct" returnformat="JSON" >

しかし

これは同じことをします returntype="string" returnformat="plain" + <cfreturn serializeJSON(query) >これは jQuery の観点から見ると問題です。なぜなら、列ごとに SerializeJSON の再シリアル化を使用したとしても、醜い JSON が得られるからです。

  1. cfloop と連結を通じて JSON 文字列を手動で作成できます:/
  2. SerializeJSON をオーバーライドする cfjson.cfc を使用します
  3. Ben Nadel のサイトにアクセスし、彼の toJSON メソッドを取得し、ニーズに合わせて何らかの方法で変更します。

もう 1 つは、serializeJSON で、大文字のキーを返すため、lcase() を使用するか、js に .LIKETHIS を記述することに注意してください。

追伸:jQuery で HTML を動的に作成するには、これを試してください。

var someLiElement = $('<li />').addClass('custom_class')
                 .text('Foo bar')
                 .attr('id', 'custom_id' + someInteger)

次にメソッドを親要素に追加します

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top