JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式,应用非常广泛。
通过之前的教程,我们知道脚本模型中有个DBQueryToJSON函数,可以直接将数据库中查询来的数据输出成JSON格式的字符串,但为了便于Delphi开发人员方便的将JSON转换成Dataset对象,所以保留了rtc json的特点,js无法直接识别这个json串,但我们只要简单的用js处理一下,也能方便的识别出来,以下是识别的演示代码:
<?
//连接 MSAccess 数据库的连接字符串
$s:=DBConn('mydb','DriverID=MSAcc;Database=.\db.mdb;');
UnicodeToAnsi(DBQueryToJSON('mydb','select * from tuser'));
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="http://cdn.bootcss.com/jquery/3.1.1/jquery.min.js"></script>
<script type="text/javascript">
function test(){
//先返回json内容,以便查阅
$.ajax({
url: "db.api",
headers:{},
type:"GET",
success: function(result){
$("#aaa").html(result);
},
dataType: "text"
});
//开始使用js识别json数据
$.ajax({
url: "db.api",
headers:{},
type:"GET",
success: function(result){
//将返回的json串去掉\/后,js就能直接识别json串了。
var parsedJson = jQuery.parseJSON(
result.replace(/\\\/dsfields/,'dsfields').replace(/\\\/dsrows/,'dsrows'));
$("#bbb").html("");//先清空一下,因为后面我是用append添加
//获取字段
//$("#bbb").html(parsedJson.dataset.dsfields[0].name);
$.each(parsedJson.dataset.dsfields, function(i, item) {
$("#bbb").append("name:"+item.name);
if (item.type=="W")
{$("#bbb").append(" type:字符串");}
else if (item.type=="I")
{$("#bbb").append(" type:数值");}
else if (item.type=="WM")
{$("#bbb").append(" type:备注");}
if (item.size!=undefined){$("#bbb").append(" size:"+item.size);}
$("#bbb").append("<hr/>");
});
//获取内容
//$("#bbb").append(parsedJson.dataset.dsrows[0][0]);
$.each(parsedJson.dataset.dsrows, function(j, item) {
var count = 0;
$.each(parsedJson.dataset.dsrows[j], function(i, item) {
$("#bbb").append(item);
if (++count!=parsedJson.dataset.dsrows[j].length){
$("#bbb").append(",");
}
});
$("#bbb").append("<hr/>");
});
},
dataType: "text"
});
}
</script>
</head>
<body>
<button type="button" onclick="test();">测试</button>
<br>
<div id="aaa">...</div>
====================================
<div id="bbb">...</div>
</body>
</html>
看明白了吗?对,仅仅是将“\/”去掉就可以了,是不是很简单?
当然,在正常的开发过程中,是不建议这样处理的,因为浏览器限制比较多,你通过js去处理,效率是非常低下的,你应该在脚本中处理,比如使用DBQuery函数获取数据后,循环输出拼接后的内容为JSON串,这样效率就高很多了。
附效果图: