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


Posted in Javascript onAugust 06, 2016

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

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

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

{'Employee': [{'name':'John','sex':'man','age':'25'},{'name':'Tom','sex':'man','age':'21'}]}

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

客户端代码如下:

//JQuery 调用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);
      }
    });
}

服务端代码如下:

/// <summary>
///
/// </summary>
/// <param name="students"></param>
/// <returns></returns>
[WebMethod]
[ScriptMethod(ResponseFormat=ResponseFormat.Json)]
public string ImportStu(Dictionary<string,string> []students)
{
  if (students.Length == 0)
  {
    return "没有任何数据!";
  }
  else
  {
    try
    {
      foreach (Dictionary<string, string> 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程序设计有所帮助。

Javascript 相关文章推荐
JavaScript的public、private和privileged模式
Dec 28 Javascript
Jquery动态更改一张位图的src与Attr的使用
Jul 31 Javascript
在JavaScript中使用NaN值的方法
Jun 05 Javascript
js正则表达式中exec用法实例
Jul 23 Javascript
基于javascript实现listbox左右移动
Jan 29 Javascript
在AngularJS框架中处理数据建模的方式解析
Mar 05 Javascript
js实现为a标签添加事件的方法(使用闭包循环)
Aug 02 Javascript
BootStrap入门教程(二)之固定的内置样式
Sep 19 Javascript
JS实现的tab切换选项卡效果示例
Feb 28 Javascript
JavaScript JMap类定义与使用方法示例
Jan 22 Javascript
基于JS开发微信网页录音功能的实例代码
Apr 30 Javascript
详解vue 自定义组件使用v-model 及探究其中原理
Oct 11 Javascript
Google 地图API Map()构造器详解
Aug 06 #Javascript
Google 地图API资料整理及详细介绍
Aug 06 #Javascript
jquery自动补齐功能插件flexselect用法示例
Aug 06 #Javascript
Google 地图类型详解及示例代码
Aug 06 #Javascript
Google 地图控件集详解及实例代码
Aug 06 #Javascript
Google 地图事件实例讲解
Aug 06 #Javascript
Google 地图叠加层实例讲解
Aug 06 #Javascript
You might like
php下利用curl判断远程文件是否存在的实现代码
2011/10/08 PHP
Ajax请求PHP后台接口返回信息的实例代码
2018/08/21 PHP
FireFox JavaScript全局Event对象
2009/06/14 Javascript
JavaScript函数作用域链分析
2015/02/13 Javascript
Javascript设计模式之观察者模式(推荐)
2016/03/29 Javascript
原生js实现轮播图
2017/02/27 Javascript
AngularJS自定义指令实现面包屑功能完整实例
2017/05/17 Javascript
微信小程序开发教程之增加mixin扩展
2017/08/09 Javascript
jQuery实现的响应鼠标移动方向插件用法示例【附源码下载】
2018/08/28 jQuery
基于 vue-skeleton-webpack-plugin 的骨架屏实战
2019/08/05 Javascript
微信小程序 checkbox使用实例解析
2019/09/09 Javascript
Vue+Openlayers自定义轨迹动画
2020/09/24 Javascript
Python获取apk文件URL地址实例
2013/11/01 Python
Python中optionParser模块的使用方法实例教程
2014/08/29 Python
python中利用Future对象异步返回结果示例代码
2017/09/07 Python
python中实现k-means聚类算法详解
2017/11/11 Python
Python常见工厂函数用法示例
2018/03/21 Python
关于Tensorflow中的tf.train.batch函数的使用
2018/04/24 Python
Python3.4 tkinter,PIL图片转换
2018/06/21 Python
Python requests模块实例用法
2019/02/11 Python
Python气泡提示与标签的实现
2020/04/01 Python
基于Python的Jenkins的二次开发操作
2020/05/12 Python
CSS3实现的文本3D效果附图
2014/09/03 HTML / CSS
一款利用纯css3实现的win8加载动画的实例分析
2014/12/11 HTML / CSS
CSS3 实现弹跳的小球动画
2020/10/26 HTML / CSS
飞利浦比利时官方网站:Philips比利时
2016/08/24 全球购物
Hotels.com爱尔兰:全球酒店预订
2017/02/24 全球购物
欧洲最大的滑雪假期供应商之一:Sunweb Holidays
2018/01/06 全球购物
美国中西部家用医疗设备商店:Med Mart(轮椅、踏板车、升降机等)
2019/04/26 全球购物
大专生工程监理求职信
2013/10/04 职场文书
后勤园长自我鉴定
2013/10/17 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书
2014年司机工作总结
2014/11/21 职场文书
小学一年级数学教学计划
2015/01/20 职场文书
主持人开幕词
2015/01/29 职场文书
公司市场部岗位职责
2015/04/15 职场文书