当前位置: 首页 > 编程笔记 >

jQuery调用Webservice传递json数组的方法

花永昌
2023-03-14
本文向大家介绍jQuery调用Webservice传递json数组的方法,包括了jQuery调用Webservice传递json数组的方法的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了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不是我的类之一。 有什么想法吗