本文实例讲述了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相关内容感兴趣的读者可查看本站专题:《jQuery扩展技巧总结》、《jQuery常用插件及用法总结》、《jQuery拖拽特效与技巧总结》、《jQuery表格(table)操作技巧汇总》、《jquery中Ajax用法总结》、《jQuery常见经典特效汇总》、《jQuery动画与特效用法总结》及《jquery选择器用法总结》
希望本文所述对大家jQuery程序设计有所帮助。
本文向大家介绍jQuery中通过ajax调用webservice传递数组参数的问题实例详解,包括了jQuery中通过ajax调用webservice传递数组参数的问题实例详解的使用技巧和注意事项,需要的朋友参考一下 下面通过实例给大家说明比较直观些,更方便大家了解。 本人的项目中通过jquery.ajax调用webservice. 客户端代码如下: 服务端代码如下: 总是抛出异常. 问题出现在这里
问题内容: 我正在尝试将jquery字符串传递给我的cakephp控制器,但我不断收到一条错误消息,指出json_decode需要一个字符串,但传递了一个数组。 这是我的ajax的代码: 在我的控制器中,我试图像这样接收数据: 但是我得到上面提到的错误的任何想法如何解决这一点将非常感谢。 问题答案: 您确定使用的网址正确吗?如果您使用的是CakePHP,那么为什么不使用它呢? 尝试使用以下命令调试
问题内容: 我有以下网络服务; 这是库存标准,不更改类装饰器。 我有这个jQuery方法; 这是一个发布操作,因为稍后我需要向其发布数据。 当我执行jQuery时,返回“ No transport”错误。 我还应该提到的一件事是,jQuery存储在我的计算机上的简单HTML文件中,并且WebService也正在我的计算机上运行。 HTML页面上没有代码,它只是一个网页,而不是ac#项目或其他任何代
问题内容: 我现在很头疼,因为我整天都遇到这个问题,但仍然无法解决。我在Google和StackOverflow上看了几个小时,尝试了许多方法(包括从JSON更改为JSONP,检查PHP上的标头,本地主机测试),询问了朋友等等,但我仍然陷入困境。也许只是一个细节,我不知道。 我正在开发一个Android移动应用程序,为此,我在托管服务器(例如example.com)上有一个PHP Web服务,自从
问题内容: 我正在尝试执行一个Web服务,该服务返回带有以下代码的DataTable: 如果Web服务返回一个类,则它将起作用,因此它与输入参数等无关。仅当Web方法返回一个数据表(该数据表仅包含2列和2行用于我正在执行的测试)时,它才会失败。 WebService类装饰有[ScriptService]属性,因此我认为ASP.NET将自动将返回值序列化为JSON。它似乎不适用于数据表。 我发现的唯
我有一个调用bean的apache servicemix(camel 2.9)路由,它反过来会发出SOAP请求。SOAP代码是通过wsdl2java生成的,工作正常(cxf 2.4.0)。我遇到的问题是当抛出SOAP错误时,我会遇到以下问题: 从一点谷歌搜索(我的背景是C#)错误似乎是说类已被多次加载,但我看不出这是怎么可能的,因为SOAPFaultException不是我的类之一。 有什么想法吗