我有一组预定义的 MySQL 查询,我想在 EasyUI 数据网格 (jQuery) 上显示其结果。
问题是每个查询返回不同的结果列,所以我不能使用类似于 jQuery 教程部分Dynamically change datagrid columns的东西,因为在 PHP 文件中执行查询之前列标题是未知的。
但是,我的 PHP 脚本返回的每个 JSON 结果都包含数据列的名称。有什么方法可以在不事先知道列(字段)名称的情况下将结果集映射到数据网格,或者我的方法是错误的?我是 jQuery 的初学者,试图理解。
HTML:
<script>
function exec_prepared(index){
$('#tt').panel({title:prepared_statements[index]});
$('#tt').datagrid('load',{index:index})
}
</script>
<div id="dlg" class="easyui-dialog" style="width:600px; height:280px; padding:10px 20px"
closed="false" buttons="#dlg-buttons">
<div class="ftitle">Prepared Statements</div>
<form id="fm" method="post" novalidate>
<div class="fitem">
<a href="#" class="easyui-linkbutton" data-options="iconCls:'icon-search'"
onclick="exec_prepared(0)">Test Query 1</a>
<a href="#" class="easyui-linkbutton" data-options="iconCls:'icon-search'"
onclick="exec_prepared(1);">Test Query 2</a>
</div>
</form>
</div>
</div>
<table id="tt" class="easyui-datagrid" style="width:600px;height:750px"
url="getdata.php" rownumbers="true" pagination="true" pagesize="40">
</table>
PHP
switch $index
case 0:
$query="Select * from tableA";
break;
case 1:
$query="Select * from tableB";
break;
...
if (!$rs=mysql_query($query)){echo "Error in SQL line: ".__LINE__."<br>";echo $query;exit(1);}
$result["total"] = mysql_num_rows($rs);
$items = array();
while($row = mysql_fetch_object($rs)){
array_push($items, $row);
}
$result["rows"] = $items;
echo json_encode($result);