找回密码
 会员注册
查看: 172|回复: 0

关于asp输出json对象的方法及实例

[复制链接]

1389

主题

5

回帖

496万

积分

管理员

积分
4962992
发表于 2024-2-29 08:19:12 | 显示全部楼层 |阅读模式
相信大家对于asp和json都不陌生,当下json应用的非常广泛,但asp语言中并没有可以直接生成json对象的方法,我在网上查了很多资料,关于asp生成json对象的方法,大多都写得很简单,大多很差强人意,有的虽然是写了关键的代码,但并没有实际的案例可供参考。现在我就把我实现的代码贴出来供大家参考。


1.目的:用asp得到json对象:

  1. {"total":17,"rows":[{"News_ID":54,"NewsType_id":78},{"News_ID":55,"NewsType_id":78},{"News_ID":56,"NewsType_id":78},{"News_ID":57,"NewsType_id":78},{"News_ID":58,"NewsType_id":78},{"News_ID":59,"NewsType_id":78},{"News_ID":60,"NewsType_id":78},{"News_ID":61,"NewsType_id":78},{"News_ID":62,"NewsType_id":78},{"News_ID":63,"NewsType_id":78},{"News_ID":64,"NewsType_id":78},{"News_ID":65,"NewsType_id":78},{"News_ID":106,"NewsType_id":78},{"News_ID":107,"NewsType_id":78},{"News_ID":126,"NewsType_id":78},{"News_ID":192,"NewsType_id":78},{"News_ID":194,"NewsType_id":78}]}
复制代码

这是我们将得到的json数据。


2.需要引用的文件

  后台需要引入json类文件:  json.asp   ,   

  前台需要引入常用的文件: json2.js ,  jquery.js 


3.后台程序代码:(关键的来了)

index_json.asp 页面代码:

  1. <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
  2. <% Response.Addheader "Content-Type","text/html; charset=utf-8"  %>
  3. <!--#include file="inc/json.asp"-->
  4. <!--#include file="inc/Conn.asp" -->
  5. <%
  6. Dim sql_class,sql_top,sql_colums,sql_whereBy,sql_orderBy
  7. sql_class = request.Item("sql_class")
  8. sql_top = request.Item("sql_top")
  9. sql_colums = request.Item("sql_colums")
  10. sql_whereBy = request.Item("sql_whereBy")
  11. sql_orderBy = request.Item("sql_orderBy")
  12. Sql="select "&sql_top&" "&sql_colums&" from "&sql_class&" where 1=1 "&sql_whereBy&" "&sql_orderBy
  13. %>
  14. <%
  15. Set Rs = Server.CreateObject("ADODB.Recordset")
  16. Rs.Open sql,conn,1,3
  17. jsonStr = ""
  18. rows = ""
  19. Dim i,json_rows,json_ret,arr_rows
  20. Dim myArray()
  21. Redim myArray(rs.recordcount-1) '将数组大小重新定义为20
  22. Set jsonObj=New json
  23. jsonObj.toResponse=False
  24. Set json_ret = server.createobject("scripting.dictionary")
  25. For i=0 To rs.recordcount-1
  26. Set myArray(i) = server.createobject("scripting.dictionary")
  27. For Each e In rs.Fields
  28. 'rows = rows &""""& e.Name & """:""" & replace(e.value,chr(34),"@_'_@") & ""","
  29. myArray(i).Add e.Name,e.value '将key/value加到行数组对象中
  30. Next
  31. Rs.movenext
  32. Next
  33. json_ret.Add "total",rs.recordcount
  34. json_ret.Add "rows",myArray
  35. jsonStr = jsonObj.toJSON(Empty,json_ret,False)
  36. response.Write jsonStr
  37. %>
复制代码

上面的代码是将数据库中的数据取出来并将数据保存为json对象,这里面用到了  dictionary ,目前还没有别的办法生成多层级的json数据,只能用它来生成了。 有人说我可以将数据库的数据取出来然后拼接成json数据格式。 对,没错,我也尝试过,但是你会发现,它生成的永远都是string字符串,不是对象,异步获取json格式或者将这个数据传给一些插件的时候你会发现你怎么也得不到想要的结果,原因就在于格式不正确,你得到的是json string,不是json object。 那又有人说了,我可以在异步获取到这个json string之后再将该数据用eval方法转成json对象,对,没错,是可以。 弊端是有的,而且你会发现很头疼的。 这个问题在稍后的文章里面我会再来解释。


4.接下来我们要做的就是将生成的json对象数据异步获取并显示到前台的dom中,看一下demo:

文件名 ajaxShow.html

  1. <!DOCTYPE html>
  2. <html lang="zh-cn">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalabel=no" />
  7. <meta name="renderer" content="webkit" />
  8. <script type="text/javascript" src="js/json2.js"></script>
  9. <script type="text/javascript" src="js/jquery.js"></script>
  10. <style type="text/css">
  11. body
  12. {
  13. min-width: 1020px;
  14. font-size: 14px;
  15. background: #fff;
  16. font-family: "微软雅黑" ,Microsoft Yahei;
  17. background: #000;
  18. padding:20px;
  19. margin:20px;
  20. }
  21. .tips
  22. {
  23. margin:20px;
  24. width: 50%;
  25. height: auto;
  26. margin: 10px auto;
  27. border: 1px solid #fff;
  28. padding: 20px 5px;
  29. font-size: 16px;
  30. color: #fefefe;
  31. background: rbga(220,220,220,0.8);
  32. word-wrap:break-word;
  33. }
  34. .text-center{ text-align:center}
  35. .min-height{ min-height:300px; }
  36. .radius
  37. {
  38. border-radius:5px;
  39. }
  40. .font-blue
  41. {
  42. color: #034C9A;
  43. }
  44. </style>
  45. <script type="text/javascript">
  46. var url = "http://localhost:701/index_json.asp"
  47. var relations = {
  48. sql_class: "Web_News", //表名
  49. sql_top: "", //取数据总条数 top 10
  50. sql_colums: "News_ID,NewsType_id", //列名,用","隔开,如果全部获取,则填写"*"
  51. sql_whereBy: "and NewsType_id=78",
  52. sql_orderBy: "order by News_ID asc"
  53. }
  54. $.post(
  55. url,
  56. relations,
  57. function (data) {
  58. $('#ajax_data').html(JSON.stringify(data));
  59. var total = data.total;
  60. //$('#ajax_data').html(total);
  61. }
  62. , "json"
  63. );
  64. function strToJson(str) {
  65. var json = eval('(' + str + ')');
  66. return json;
  67. }
  68. </script>
  69. </head>
  70. <body>
  71. <div id="header" class="tips radius text-center">
  72. <b>asp生成json对象并异步获取json对象数据 实例</b>
  73. </div>
  74. <div id="Div1" class="tips radius">
  75. 以下将显示异步获取的内容:
  76. </div>
  77. <div id="ajax_data" class="tips radius min-height">
  78. </div>
  79. </body>
  80. </html>
复制代码
文件的引用和css我就不说了。关键在于ajax部分,这里我用的是jquery中的$.post()方法,有2出关键点: 第一, url ,相信这个大家都会写对吧,就是你请求的数据源页面,我们的例子中为刚才我们建立的 ajax_index.asp; 第二, 'json',这个参数大家可以查一下jquery关于ajax异步获取部分的手册。该参数就是为了保证生成的数据为json对象。

其中你会发现

  1. JSON.stringify(data)
复制代码
这个就是json2.js  json类文件中的方法,该方法就是将json对象转为string类型,以便将结果显示到dom里面。 运行一下http://localhost:701/ajaxShow.html,是不是已经得到了我们想要的数据。

这是我们全部的数据,当然我们怎么知道我们获取的是json对象呢,只需要试试data.total能不能获取到就知道了啦;我们改一下$.post()中的代码:

  1. //$('#ajax_data').html(JSON.stringify(data));
  2. var total = data.total;
  3. $('#ajax_data').html(total);
复制代码
在刷新一下看看,是不是得到了 17;


哈哈,果然是得到啦  !  好了,该介绍的就介绍完了,关于问什么不用拼接的方法得到json格式的字符串,期待下一篇文章。

源码下载


来源:https://blog.csdn.net/zxhj963/article/details/50912296
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?会员注册

×
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-27 00:51 , Processed in 2.363888 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表