Bry*_*yan 4 coldfusion jquery json coldfusion-9
我正在尝试向JSON输出ColdFusion查询,以便它可以与jQuery EasyUI(特别是Datagrid)一起使用.
从EasyUI附带的示例.json文件中,这是他们正在寻找的格式......
{"total":2
, "rows":[
{ "productid":"FI-SW-01"
, "productname":"Koi"
, "unitcost":10.00
, "status":"P"
, "listprice":36.50,"attr1":"Large"
, "itemid":"EST-1"
}
, { "productid":"K9-DL-01"
, "productname":"Dalmation"
, "unitcost":12.00
, "status":"P"
, "listprice":18.50
, "attr1":"Spotted Adult Female"
, "itemid":"EST-10"
}
]
}
Run Code Online (Sandbox Code Playgroud)
但是,当我SerializeJSON(emails)在ColdFusion查询上使用时,我得到了这个:
{ "COLUMNS":["CUSTOMERID","CUSTOMERFIRSTNAME"]
, "DATA":[
[101,"Bhavin"],[102,"Frank"]
]
}
Run Code Online (Sandbox Code Playgroud)
这似乎不被EasyUI认可,所以我猜问题是(1)EasyUI是否能够识别和使用ColdFusion的输出,如图所示,或者(2)有没有办法让ColdFusion输出JSON in像EasyUI示例中包含的格式?
更新:
这是我使用serializeQueryByColumns参数时的样子:
{ "ROWCOUNT":83
, "COLUMNS":["CUSTOMERID","CUSTOMERFIRSTNAME"]
, "DATA":{
"CUSTOMERID":[101,102]
,"CUSTOMERFIRSTNAME":["Bhavin","Frank","]
}
}
Run Code Online (Sandbox Code Playgroud)
但仍然没有被EasyUI识别.在他们的文档中,他们显示了一个看起来像这样的php示例,所以我想尝试使用ColdFusion复制它的输出我想:
$rs = mysql_query('select * from users');
$result = array();
while($row = mysql_fetch_object($rs)){
array_push($result, $row);
}
echo json_encode($result);
Run Code Online (Sandbox Code Playgroud)
谢谢!
小智 6
loadFilterdatagrid 的功能可以将任何数据转换为可以加载到datagrid中的标准数据格式.
<script>
var data = { "ROWCOUNT":83
, "COLUMNS":["CUSTOMERID","CUSTOMERFIRSTNAME"]
, "DATA":{
"CUSTOMERID":[101,102]
,"CUSTOMERFIRSTNAME":["Bhavin","Frank"]
}
};
function myLoadFilter(data){
var result = {total:data.ROWCOUNT};
var rows = [];
var count = data.DATA[data.COLUMNS[0]].length;
for(var i=0; i<count; i++){
var row = {};
$.map(data.COLUMNS, function(field){
row[field] = data.DATA[field][i];
})
rows.push(row);
}
result.rows = rows;
return result;
}
</script>
Run Code Online (Sandbox Code Playgroud)
datagrid组件可以声明为:
<table class="easyui-datagrid" title="Basic DataGrid" style="width:700px;height:250px"
data-options="
singleSelect:true,
collapsible:true,
data:data,
loadFilter:myLoadFilter
">
<thead>
<tr>
<th data-options="field:'CUSTOMERID',width:100">CUSTOMERID</th>
<th data-options="field:'CUSTOMERFIRSTNAME',width:200">CUSTOMERFIRSTNAME</th>
</tr>
</thead>
</table>
Run Code Online (Sandbox Code Playgroud)
该示例可从http://jsfiddle.net/d8zYy/获得
| 归档时间: |
|
| 查看次数: |
741 次 |
| 最近记录: |