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 相关文章推荐
对象无length属性时IE6/IE7中无法将其转换成伪数组(ArrayLike)
Jul 31 Javascript
jQuery EasyUI API 中文文档 - ComboTree组合树
Oct 11 Javascript
了解jQuery技巧来提高你的代码(个人觉得那个jquery的手册很不错)
Feb 10 Javascript
this,this,再次讨论javascript中的this,超全面(经典)
Jan 05 Javascript
Bootstrap中表单控件状态(验证状态)
Aug 04 Javascript
使用BootStrapValidator完成前端输入验证
Sep 28 Javascript
详解如何提高 webpack 构建 Vue 项目的速度
Jul 03 Javascript
JS分页的实现(同步与异步)
Sep 16 Javascript
JS中的多态实例详解
Oct 15 Javascript
详解react-router 4.0 下服务器如何配合BrowserRouter
Dec 29 Javascript
Vue SSR 组件加载问题
May 02 Javascript
ES2020系列之空值合并运算符 '??'
Jul 22 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
Thinkphp的volist标签嵌套循环使用教程
2014/07/08 PHP
Swoole4.4协程抢占式调度器详解
2019/05/23 PHP
Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
2020/04/06 PHP
XAMPP升级PHP版本实现步骤解析
2020/09/04 PHP
说说掌握JavaScript语言的思想前提想学习js的朋友可以看看
2009/04/01 Javascript
被jQuery折腾得半死,揭秘为何jQuery为何在IE/Firefox下均无法使用
2010/01/22 Javascript
javascript实现des解密加密全过程
2014/04/03 Javascript
javascript将浮点数转换成整数的三个方法
2014/06/23 Javascript
js阻止事件追加的具体实现
2014/10/15 Javascript
jquery实现的V字形显示效果代码
2015/10/27 Javascript
bootstrap网页框架的使用方法
2016/05/10 Javascript
jQuery数据检索中根据关键字快速定位GridView指定行的实现方法
2016/06/08 Javascript
bootstrap下拉菜单使用方法解析
2017/01/13 Javascript
ES6学习教程之对象字面量详解
2017/10/09 Javascript
JS获取一个表单字段中多条数据并转化为json格式
2017/10/17 Javascript
解决循环中setTimeout执行顺序的问题
2018/06/20 Javascript
JS秒杀倒计时功能完整实例【使用jQuery3.1.1】
2019/09/03 jQuery
解决layui弹出层layer的area过大被遮挡的问题
2019/09/21 Javascript
vue使用原生swiper代码实例
2020/02/05 Javascript
js实现磁性吸附的示例
2020/10/26 Javascript
浅析Python中的多条件排序实现
2016/06/07 Python
浅析python打包工具distutils、setuptools
2018/04/20 Python
Python学习笔记之读取文件、OS模块、异常处理、with as语法示例
2019/06/04 Python
Python创建空列表的字典2种方法详解
2020/02/13 Python
Django框架获取form表单数据方式总结
2020/04/22 Python
Python爬虫爬取新闻资讯案例详解
2020/07/14 Python
Python自动化办公Excel模块openpyxl原理及用法解析
2020/11/05 Python
python基于Kivy写一个图形桌面时钟程序
2021/01/28 Python
《和我们一样享受春天》教学反思
2014/02/07 职场文书
求职信模板
2014/05/23 职场文书
师德先进个人材料
2014/12/20 职场文书
2015年教学管理工作总结
2015/05/20 职场文书
2016医师资格考试考生诚信考试承诺书
2016/03/25 职场文书
Python虚拟环境virtualenv是如何使用的
2021/06/20 Python
浅析Python中的套接字编程
2021/06/22 Python
Win10此设备不支持接收Miracast无法投影的解决方法
2022/07/07 数码科技