基于jQuery的ajax功能实现web service的json转化


Posted in Javascript onAugust 29, 2009

不过这篇文章的题目我真不知道该怎么起,如果你因为这个差劲的题目错过这个东西,那真的很可惜。

我在做这个东西之前参考了不少文章:

http://www.roseindia.net/tutorials/json/parse-message-JSON-JS.shtml

http://www.json.org/js.html

http://funkatron.com/site/comments/safely-parsing-json-in-javascript/

http://docs.jquery.com/Ajax/jQuery.getJSON

http://encosia.com/2009/06/29/never-worry-about-asp-net-ajaxs-d-again/

http://encosia.com/2009/04/07/using-complex-types-to-make-calling-services-less-complex/

http://www.isolutionteam.co.uk/json-jquery-ajax-aspnet-and-c-to-get-ajaxed-data-table-rows-passing-multiple-parameters/

第一步需要做的是如何在Server端把一个datatable转坏为自己需要的那种格式:

本来想使用.net的javascriptSerializer来完成的(结合Genirics库的List等),但是后来发现使用NewtonSoft.Json更加灵活,而且扩展性比较好,甚至在网上有找到一些代码能够现成使用。

 

先看看我在Server端如何实现了Data转化:

 

基于jQuery的ajax功能实现web service的json转化

这里不仅能够转换Datatable还有DataSet,以后再扩展JavascriptSerializer的转换功能。需要注意的是转化的最终结果需要是个[]包着的一段字符串.开始我试着使用{}来最终返回json为对象,结果在客户端真的是没有头绪根本就无法转换。最后看到一篇文章介绍,在.net 3.5中你的web Services返回来的结果会自动打包成一个json对象,且名字为d,如:{“d”:***}.所以我只有在服务器端的生成一个array形式的包。

然后我创建了一个数据库表,内容如下:

 

,基于jQuery的ajax功能实现web service的json转化

定义的web方法如下:

 

基于jQuery的ajax功能实现web service的json转化

Serializer方法已经在DNA_JSON中打包好。它是在NewtonSoft.Json的基础转换类基础上扩展的。

 

第二步是客户端的东西:

首先我们需要用到几个js, jQuery.js, json2.js就OK了。

 

基于jQuery的ajax功能实现web service的json转化

上面图所示我们用到了jQuery的ajax和JSON。Parse()转换函数。

还有需要注意的是res.d它是.net 3.5默认为你打包好的json的属性。如果你使用framework2.0就没有这个问题了。

最后是看看如何把这些ojbect组成的array显示在一个table中,代码如下:

<script type="text/javascript"><!-- 
function BuildTable(msg) { 
if ($('#tblResult').length != 0) // remove table if it exists 
{$("#tblResult").remove();} 
var table = '<table class="table.display"><thead> <tr><th>First Name</th> <th>Last Name</th><th>Email</th></thead> <tbody>'; 
for (var i=0;i<=msg.length-1;i++) { 
var row = '<tr>'; 
row += '<td>' + msg[i].UserName+ '</td>'; 
row += '<td>' +msg[i].FirstName+ '</td>'; 
row += '<td>' + msg[i].email + '</td>'; 
row += '</tr>'; 
table += row; 
} 
table += '</tbody></table>'; 
$('#example1').html(table); 
} 
// --></script>

如果还有需要源代码的请留言。接下来我会试着去使用这个方法把一些jQuery的ajax插件介绍给大家,然后把一些datagrid的插件封装成asp.net控件,这样你就不需要使用微软那笨重的datagrid了。
Javascript 相关文章推荐
获取页面高度,窗口高度,滚动条高度等参数值getPageSize,getPageScroll
Sep 22 Javascript
使用Jquery来实现可以输入值的下拉选单 雏型
Dec 06 Javascript
JavaScript中的property和attribute介绍
Dec 26 Javascript
原生js实现改变随意改变div属性style的名称和值的结果
Sep 26 Javascript
js几秒以后倒计时跳转示例
Dec 26 Javascript
java中String类型变量的赋值问题介绍
Mar 23 Javascript
浅谈Vue Element中Select下拉框选取值的问题
Mar 01 Javascript
解决Vue-cli npm run build生产环境打包,本地不能打开的问题
Sep 20 Javascript
浅谈一种让小程序支持JSX语法的新思路
Jun 16 Javascript
wx-charts 微信小程序图表插件的具体使用
Aug 18 Javascript
JS画布动态实现黑客帝国背景效果
Nov 08 Javascript
详解template标签用法(含vue中的用法总结)
Jan 12 Vue.js
用户注册常用javascript代码
Aug 29 #Javascript
csdn 博客中实现运行代码功能实现
Aug 29 #Javascript
js 分栏效果实现代码
Aug 29 #Javascript
javascript 简练的几个函数
Aug 29 #Javascript
关于IE、Firefox、Opera页面呈现异同 写脚本很痛苦
Aug 28 #Javascript
jQuery一步一步实现跨浏览器的可编辑表格,支持IE、Firefox、Safari、Chrome、Opera
Aug 28 #Javascript
javascript 遍历验证所有文本框的值
Aug 27 #Javascript
You might like
php实现json编码的方法
2015/07/30 PHP
如何利用PHP实现上传图片功能详解
2020/09/24 PHP
javascript 有用的脚本函数
2009/05/07 Javascript
Jquery ui css framework
2010/06/28 Javascript
javascript代码编写需要注意的7个小细节小结
2011/09/21 Javascript
IE6浏览器下resize事件被执行了多次解决方法
2012/12/11 Javascript
NodeJS学习笔记之Connect中间件模块(一)
2015/01/27 NodeJs
简介JavaScript中的setTime()方法的使用
2015/06/11 Javascript
JavaScrpt的面向对象全面解析
2017/05/09 Javascript
jquery+ajax实现省市区三级联动 (封装和不封装两种方式)
2017/05/15 jQuery
Easyui 关闭jquery-easui tab标签页前触发事件的解决方法
2019/04/28 jQuery
ES6 Iterator遍历器原理,应用场景及相关常用知识拓展详解
2020/02/15 Javascript
JS面向对象编程实现的Tab选项卡案例详解
2020/03/03 Javascript
[02:26]DOTA2英雄米拉娜基础教程
2013/11/25 DOTA
[03:27]《辉夜杯》线下训练营 导师CU和海涛指点迷津
2015/10/23 DOTA
Python实现二分法算法实例
2015/02/02 Python
Python使用Mechanize模块编写爬虫的要点解析
2016/03/31 Python
Python爬虫包 BeautifulSoup  递归抓取实例详解
2017/01/28 Python
Python使用正则表达式过滤或替换HTML标签的方法详解
2017/09/25 Python
python的numpy模块安装不成功简单解决方法总结
2017/12/23 Python
Python创建普通菜单示例【基于win32ui模块】
2018/05/09 Python
windows下pycharm安装、创建文件、配置默认模板
2018/07/31 Python
Django数据库连接丢失问题的解决方法
2018/12/29 Python
pandas计数 value_counts()的使用
2019/06/24 Python
pycharm new project变成灰色的解决方法
2019/06/27 Python
python爬虫中多线程的使用详解
2019/09/23 Python
如何基于python生成list的所有的子集
2019/11/11 Python
python输出结果刷新及进度条的实现操作
2020/07/13 Python
一家专门经营包包的英国网站:MyBag
2019/09/08 全球购物
师范学院毕业生求职信范文
2013/12/26 职场文书
环保建议书100字
2014/05/14 职场文书
2014年度个人总结范文
2015/03/09 职场文书
2016自主招生教师推荐信范文
2015/03/23 职场文书
道歉的话语大全
2015/05/12 职场文书
解析Java异步之call future
2021/06/14 Java/Android
Python开发工具Pycharm的安装以及使用步骤总结
2021/06/24 Python