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串,这样效率就高很多了。

附效果图: