• 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。

  • 相关阅读:
    Java 设计模式——状态模式
    Java 设计模式——外观模式
    Java高级之虚拟机加载机制
    17.1.1.6 Creating a Data Snapshot Using Raw Data Files 创建一个数据快照使用 Raw Data Files
    17.1.1.5 Creating a Data Snapshot Using mysqldump
    17.1.1.4 Obtaining the Replication Master Binary Log Coordinates 得到复制master binary log 位置:
    17.1.1.3 Creating a User for Replication 创建一个用于用于复制:
    17.1.1.2 Setting the Replication Slave Configuration
    17.1.1.1 Setting the Replication Master Configuration 设置复制的master 配置:
    17.1.1 How to Set Up Replication 设置复制:
  • 原文地址:https://www.cnblogs.com/RascallySnake/p/1707521.html
Copyright © 2020-2023  润新知