电脑软硬件应用网
当前位置: 电脑软硬件应用网 > 设计学院 > 网络编程 > javascript > 正文
示例jquery使用ajax调用Webservice返回Json数组
示例jquery使用ajax调用Webservice返回Json数组
2010-4-10 9:08:58  文/CND8学院   出处:电脑软硬件应用网   
  本文介绍强大jquery使用ajax方法来调用Webservice服务做一个实例。

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

{'Employee':[{'name':'John','sex':'man','age':'25'},{'name':'Tom','sex':'man','age':'21'},{'name':'Mary','sex':'woman','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。

  • 上一篇文章:

  • 下一篇文章:
  • 最新热点 最新推荐 相关文章
    js或jquery获取网页控件的offset值的…
    验证JS中Object和Function的关系的代…
    不支持ASP的空间能用JS吗?
    关于20个Ajax关键问题的疑问及解答
    extjs重新设置按钮button的text的方…
    58项经典的JS代码
    使用JS自动切换背景音乐的方法
    一些常用正则表达式语法参考(数字、…
    JavaScript框架的实用函数
    推荐一些实用JS测试和验证工具给大家
    关于45IT | About 45IT | 联系方式 | 版权声明 | 网站导航 |

    Copyright © 2003-2011 45IT. All Rights Reserved 浙ICP备09049068号