jQuery调用Webservice传递json数组的方法

本文实例讲述了jQuery调用Webservice传递json数组的方法分享给大家供大家参考,具体如下:

Jquery由于提供的$.ajax强大方法,使得其调用webservice实现异步变得简单起来,可以在页面上传递Json字符串到Webservice中,Webservice方法进行业务处理后,返回Json对象给页面,让页面去展现。

这一切都非常的简单,今天要学习的并非这些。我们在实际处理业务过程中,会发现往往页面要传递给webservice 的并非一个或多个字符串,有时候需要传递的是一个组合数据,如这样的一组数据:

代码如下:

客户端将这样的Json字符串作为$.ajax方法的data参数是没有问题的,然而,服务端的webservice该如何去写接收参数却成为了一个问题。在百度、谷歌了一番后,只发现提问的却没有回答的。索性还是自己去研究吧,发现其实Employee对象首先是一个数组,其次数组的每一项都是一个Dictionary字典类型。于是我尝试在服务端使用Dictionary[] Employee来接收客户端传递的参数,一切如我所料,成功!

客户端代码如下:

调用webService导入数据 function LoadData() { var studentData = CollectionData(); $.ajax({ url: "ImportDataService.asmx/ImportStu",type: "post",contentType: "application/json;charset=utf-8",dataType: "json",data: "{'students':[{'name':'KoBe ','sex':'boy','age':'20'},{'name':'Mary','sex':'girl','age':'19'}]}",success: function(result) { alert(result.d); },error: function(e) { alert(e.responseText); } }); }

服务端代码如下:

/// /// /// /// [WebMethod] [ScriptMethod(ResponseFormat=ResponseFormat.Json)] public string ImportStu(Dictionary []students) { if (students.Length == 0) { return "没有任何数据!"; } else { try { foreach (Dictionary stu in students) { //构造一个新的Student对象。 Student student = new Student(); //为新构造的Student对象属性赋值。 foreach (string key in stu.Keys) { switch (key) { case "name": student.Name = stu[key]; break; case "sex": student.Sex = stu[key]; break; case "age": int age; if (Int32.TryParse(stu[key],out age)) { student.Age = age; } else { student.Age = 0; } break; default: break; } } } return "导入学生成功!"; } catch { throw new Exception("导入学生失败!"); } } }

需要注意的是,服务端参数名需要和客户端Json数组的key值相同,如上代码中,参数名都为students。

更多关于jQuery相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》、《》及《

希望本文所述对大家jQuery程序设计有所帮助。

相关文章

jQuery插件的种类 1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进...
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间。 入门 编写一个jQuery插件开始于给...
最近项目中需要实现3D图片层叠旋转木马切换的效果,于是用到了jquery.roundabout.js。 兼容性如图: ht...
一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异...
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一...