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 相关文章推荐
juqery 学习之六 CSS--css、位置、宽高
Feb 11 Javascript
百度判断手机终端并自动跳转js代码及使用实例
Jun 11 Javascript
使用原生JS实现弹出层特效
Dec 22 Javascript
JavaScript中模拟实现jsonp
Jun 19 Javascript
带你快速理解javascript中的事件模型
Aug 14 Javascript
浅谈JavaScript中的属性:如何遍历属性
Sep 14 Javascript
在Vue中使用echarts的方法
Feb 05 Javascript
使用watch监听路由变化和watch监听对象的实例
Feb 24 Javascript
JS简单判断是否在微信浏览器打开的方法示例
Jan 08 Javascript
微信小程序后端(java)开发流程的详细步骤
Nov 13 Javascript
js 解析 JSON 数据简单示例
Apr 21 Javascript
深入了解Vue动态组件和异步组件
Jan 26 Vue.js
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
PHPUnit测试私有属性和方法功能示例
2018/06/12 PHP
PHP实现一个限制实例化次数的类示例
2019/09/16 PHP
动态的改变IFrame的高度实现IFrame自动伸展适应高度
2012/12/28 Javascript
javascript函数重载解决方案分享
2014/02/19 Javascript
JavaScript中Hoisting详解 (变量提升与函数声明提升)
2017/08/18 Javascript
Angular4绑定html内容出现警告的处理方法
2017/11/03 Javascript
基于vue-cli、elementUI的Vue超简单入门小例子(推荐)
2019/04/17 Javascript
es6函数name属性功能与用法实例分析
2020/04/18 Javascript
OpenLayers3实现鼠标移动显示坐标
2020/09/25 Javascript
详解Java中String JSONObject JSONArray List转换
2020/11/13 Javascript
[48:30]LGD vs infamous Supermajor小组赛D组 BO3 第一场 6.3
2018/06/04 DOTA
Python执行时间的计算方法小结
2017/03/17 Python
Python实现读取字符串按列分配后按行输出示例
2018/04/17 Python
Django框架反向解析操作详解
2019/11/28 Python
python GUI库图形界面开发之PyQt5拖放控件实例详解
2020/02/25 Python
Python操作Elasticsearch处理timeout超时
2020/07/17 Python
基于python实现坦克大战游戏
2020/10/27 Python
Python包资源下载路径报404解决方案
2020/11/05 Python
python小技巧——将变量保存在本地及读取
2020/11/13 Python
用CSS3打造HTML5的Logo(实现代码)
2016/06/16 HTML / CSS
信号量和自旋锁的区别?如何选择使用?
2015/09/08 面试题
Ajax实现页面无刷新留言效果
2021/03/24 Javascript
北大青鸟学生求职信
2013/09/24 职场文书
申报职称专业技术个人的自我评价
2013/12/12 职场文书
给海归自荐信的建议
2013/12/13 职场文书
财务主管自我鉴定
2014/01/17 职场文书
2014党员批评和自我批评思想汇报
2014/09/21 职场文书
民主生活会主持词
2015/07/01 职场文书
2015年初中教务处工作总结
2015/07/21 职场文书
2016年“12.4”法制宣传日活动总结
2016/04/01 职场文书
2019交通安全宣传标语集锦!
2019/06/28 职场文书
golang elasticsearch Client的使用详解
2021/05/05 Golang
Mysql效率优化定位较低sql的两种方式
2021/05/26 MySQL
go使用Gin框架利用阿里云实现短信验证码功能
2021/08/04 Golang
Python爬虫网络请求之代理服务器和动态Cookies
2022/04/12 Python
Python实现简单得递归下降Parser
2022/05/02 Python