• Ajax学习笔记2客户端访问WebService(上)


    一, JS访问WebServie(.Asmx)基础
    1. 引用WebServie代理后,即可在输出HTML找到Type.registerNamespace('命名空间')开头的一段JS脚本,即为ScriptManager生成的客户端代理

    代码段.
    2. asp:ServiceReference的属性InlineScript="true"表示是否将代理缓存到页面中(HTML源码中)
    3. Js函数中,arguments代表当前函数的参数集合对象;arguments.Length为参数总个数
    二. JS访问PageMethod(.Aspx)基础
    1. PageMethod方法服务器端限定:-只能在Aspx页面中定义-只能是公开静态方法 -使用WebMethod属性标记

    -ScriptManager的EnablePageMethod属性为true,生成PageMethod代理
    <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />
      客户端调用: PageMethods.方法名
    小提示: 服务器到客户端传输日期型值是,实际传递的是(起始日期到现在的毫秒数和时区信息),在客户端Tostring()时,会自动进行时区转换.
    二. Ajax错误处理
    1. 调用时可以提供一个额外的错误回调函数,默认情况下不处理错误
       这里的错误: 包括错误和服务器端抛出的异常
    2. 超时时间属性只能在WebService(PageMethods)级别
    3. Ajax客户端错误处理类 Sys.Net.WebServiceError
       属性: timedout -是否超时;  message -错误消息;  ExceptionType 服务器端异常类型;  stackTrace -产生异常的方法
    4. Ajax客户端调用WebService错误处理
    function getDivision(a, b) //
    {
     ErrorHandling.set_timeout(2000);  //设置超时时间
     ErrorHandling.GetDivision(a, b, null, failedCallback); //第四个参数为错误回调函数
    }

    function failedCallback(error)//错误回调函数
    {
     var message = String.format(
      "Timeout: {0}\nMessage: {1}\nExceptionType: {2}\nStackTrace: {3}",
      error.get_timedOut(),
      error.get_message(),
      error.get_exceptionType(),
      error.get_stackTrace());
    三. 复杂数据类型使用基础
    1.公有属性和字段可被调用
    注意事项: 窗口对象中,实现Ilist接口的对象与JS数组相对应;实现IDictionary接口的对象时,Key必须是String
     alert(message);
    }
    例: 字典类型传递
    服务器端:
     [WebMethod]
     public IDictionary<string, Employee> GetEmployees()
     {
      Dictionary<string, Employee> result = new Dictionary<string, Employee>();

      Employee emp1 = new Employee();
      emp1.FirstName = "Jeffrey";
      emp1.LastName = "Zhao";
      emp1.Salary = 1000;
      result[emp1.FullName] = emp1;

      Employee emp2 = new Employee();
      emp2.FirstName = "Tom";
      emp2.LastName = "Chen";
      emp2.Salary = 2000;
      result[emp2.FullName] = emp2;
      return result;
     }
    客户端:
       function getEmployees()
       {
        ComplexType.GetEmployees(getEmployeesSucceeded);
       }
       function getEmployeesSucceeded(result)
       {
        for (var name in result)
        {
         alert(name + ": " + result[name].Salary)
        }
       }
    四. 客户端代理的使用细节
    1. 函数调用完整签名  Invoke(arg1[,...argN][,成功时的回调函数][,错误时的回调函数,][,Invoke函数与回调函数之间需要传递的对象]);
    2. 回调函数的完整签名  成功时回调函数名(返回结果[,Invoke函数与回调函数之间需要传递的对象][,调用的方法名]);
       失败时回调函数名(返回结果[,Invoke函数与回调函数之间需要传递的对象][,调用的方法名]);
    3. WebService级别默认属性
    Timeout: 超时毫秒数;
    defaultUserContext: Invoke函数与回调函数之间需要传递的对象;
    defaultSecceededCallBack 成功时的回调函数名;
    DefaultFailedCallBack 错误时的回调函数名.
    指定以上默认后,Invoke不写这些参数时,就按默认指定调用函数.

  • 相关阅读:
    C#中值类型和引用类型
    C#XML
    矩阵操作2
    scala安装
    Linux拷贝U盘文件(命令行)
    通过电脑,模拟点击手机屏幕 /手机自动点击,刷金币?
    python类
    矩阵操作
    数据预处理函数
    train_test_split数据切分
  • 原文地址:https://www.cnblogs.com/gghxh/p/971395.html
Copyright © 2020-2023  润新知