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 相关文章推荐
js常见表单应用技巧
Jan 09 Javascript
获取URL地址中的文件名和参数的javascript代码
Sep 02 Javascript
Javascript学习笔记 delete运算符
Sep 13 Javascript
jquery移动listbox的值原理及代码
May 03 Javascript
Javascript基础知识(三)BOM,DOM总结
Sep 29 Javascript
原生javascript实现图片弹窗交互效果
Jan 12 Javascript
JQuery中clone方法复制节点
May 18 Javascript
微信JSAPI支付操作需要注意的细节
Jan 10 Javascript
layui表格实现代码
May 20 Javascript
详解创建自定义的Angular Schematics
Jun 06 Javascript
使用express获取微信小程序二维码小记
May 21 Javascript
开发Node CLI构建微信小程序脚手架的示例
Mar 27 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和ACCESS写聊天室(九)
2006/10/09 PHP
PHP编程最快明白(第一讲 软件环境和准备工作)
2010/10/25 PHP
PHP计算指定日期所在周的开始和结束日期的方法
2015/03/24 PHP
php动态绑定变量的用法
2015/06/16 PHP
YII Framework框架教程之安全方案详解
2016/03/14 PHP
PHP实现微信提现(企业付款到零钱)
2019/08/01 PHP
Chrome Form多次提交表单问题的解决方法
2011/05/09 Javascript
Javascript操作cookie的函数代码
2012/10/03 Javascript
Js-$.extend扩展方法使方法参数更灵活
2013/01/15 Javascript
nodejs创建web服务器之hello world程序
2015/08/20 NodeJs
jQuery 实现ajax传入参数含有特殊字符的方法总结
2016/10/17 Javascript
Vue.Js中的$watch()方法总结
2017/03/23 Javascript
JAVA中截取字符串substring用法详解
2017/04/14 Javascript
Vue修改mint-ui默认样式的方法
2018/02/03 Javascript
vue.js使用v-model指令实现的数据双向绑定功能示例
2018/05/22 Javascript
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
2018/07/13 Javascript
JavaScript鼠标悬停事件用法解析
2020/05/15 Javascript
[57:53]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#3OG VS VP
2016/03/03 DOTA
使用Python编写爬虫的基本模块及框架使用指南
2016/01/20 Python
使用OpenCV实现仿射变换—缩放功能
2019/08/29 Python
Scrapy框架实现的登录网站操作示例
2020/02/06 Python
如何写python的配置文件
2020/06/07 Python
Python 忽略文件名编码的方法
2020/08/01 Python
python matplotlib库的基本使用
2020/09/23 Python
python性能测试工具locust的使用
2020/12/28 Python
python快速安装OpenCV的步骤记录
2021/02/22 Python
详解基于canvas的视频遮罩插件
2018/01/04 HTML / CSS
新媒传信软件测试面试题
2013/02/24 面试题
如何开发一个JQuery插件
2016/07/28 面试题
在职研究生自我鉴定
2013/10/16 职场文书
个人教师自我评价范文
2013/12/02 职场文书
体育系毕业生自荐信
2014/06/28 职场文书
导游词之沈阳清昭陵
2019/12/28 职场文书
Python离线安装openpyxl模块的步骤
2021/03/30 Python
go 实现简易端口扫描的示例
2021/05/22 Golang
写一个Python脚本下载哔哩哔哩舞蹈区的所有视频
2021/05/31 Python