$.ajax ColdFusionフロンJSONこんにちは世界
-
23-09-2019 - |
質問
私はこの例では、簡易などができます。私はリモート機能:
<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 が得られるからです。
- cfloop と連結を通じて JSON 文字列を手動で作成できます:/
- SerializeJSON をオーバーライドする cfjson.cfc を使用します
- Ben Nadel のサイトにアクセスし、彼の toJSON メソッドを取得し、ニーズに合わせて何らかの方法で変更します。
もう 1 つは、serializeJSON で、大文字のキーを返すため、lcase() を使用するか、js に .LIKETHIS を記述することに注意してください。
追伸:jQuery で HTML を動的に作成するには、これを試してください。
var someLiElement = $('<li />').addClass('custom_class')
.text('Foo bar')
.attr('id', 'custom_id' + someInteger)
次にメソッドを親要素に追加します