拼吾爱程序人生其他编程Ajax 在ASP.NET 2.0 AJAX中调用Webservice

1  /  1  页   1 跳转 查看:682

在ASP.NET 2.0 AJAX中调用Webservice

在ASP.NET 2.0 AJAX中调用Webservice

文/佚名  出处/中国IT实验室

  ASP.NET 2.0 Ajax中能够在客户端js中很方便地调用服务器Webservice,以下为一些调用的示例。笔者安装的ASP.NET 2.0 AJAX

  版本为AJAX November CTP。

  三个示例分别为:

  1 带参数的WS方法

  2 不带参数的WS方法

  3 参数类型为DataTable的WS方法

  一、WebMethod

  注意要点:

  1 WebMethod类需要添加命名空间 Microsoft.Web.Script.Services,此空间需要引用Microsoft.Web.Preview.dll

  2 类声明加入标签 [ScriptService]

  3 在Asp.net 2.0里可以直接用DataTable作为返回类型了,但是需要在Web.config文件添加序列化转换器的属性。DataSet、DataTable、DataRow均有转换器

      < system.web.extensions>
  < scripting>
  < webServices>
  < jsonSerialization>
  < converters>
  < add name="DataSetConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataSetConverter, Microsoft.Web.Preview"/>
  < add name="DataRowConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataRowConverter, Microsoft.Web.Preview"/>
  < add name="DataTableConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataTableConverter, Microsoft.Web.Preview"/>
  < /converters>
  < /jsonSerialization>
  < /webServices>
  < /scripting>
  < /system.web.extensions>




友情提示:此文并不表示本站肯定持有相同观点,转载请注明出处。
 您可能对 [Ajax] 的这些文章也感兴趣:

黑帽大会研究人员展示如何攻陷AJAX网站  AJAX开发工具Atlas:实现机制浅析(三)
使用AJAX技术构建更优秀的Web应用程序  为AJAX应用程序构建一个错误提交系统
AJAX框架汇总  基于ExtJs2.0日期时间(DateTime)控件的升级版本
AJAX和J2EE创建功能强大的瘦客户端  AJAX编程实践之与服务器通信
DWR让Ajax如此简单  asp.net ajax客户端编程+jquery:实现泛型数据的客户端数据调用、添加、删除
JavaScript实现AJAX的拖动效果  Ajax的优势
prototype.js常用函数及其用法  ASP.NET的AJAX控件工具包已经更新
微软Ajax.SlideShowExtender控件使用详解  ExtJs2.0学习系列(1)--Ext.MessageBox
Mashups+Ajax 打造全新Web开发  使用 Google Web Toolkit 开发 Ajax
AJAX架构之Dojo篇  AJAX应用解决一些常见问题
 

回复:在ASP.NET 2.0 AJAX中调用Webservice

WEB服务1:WS1

      using System;
  using System.Web;
  using System.Collections;
  using System.Web.Services;
  using System.Web.Services.Protocols;
  using Microsoft.Web.Script.Services;
  using System.Data;

  /**////
  /// WS1 的摘要说明
  ///
  [WebService(Namespace = [url]http://tempuri.org/[/url])]
  [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
  [ScriptService]
  public class WS1 : System.Web.Services.WebService {
  public WS1 () {
  //如果使用设计的组件,请取消注释以下行
  //InitializeComponent();
  }

  [WebMethod]
  public string ServerTime()
  {
  return String.Format("now: {0}", DateTime.Now);
  }

  [WebMethod]
  public DataTable GetDataTable()
  {
  DataTable dt = new DataTable("Person");
  dt.Columns.Add(new DataColumn("Name", typeof(string)));
  dt.Columns.Add(new DataColumn("LastName", typeof(string)));
  dt.Columns.Add(new DataColumn("Email", typeof(string)));
  dt.Rows.Add("kui", "he", [email]hekui168@163.com[/email]);
  dt.Rows.Add("ren", "chao", [email]chaoren888@163.com[/email]);
  return dt;
  }
  }


 

回复:在ASP.NET 2.0 AJAX中调用Webservice

WEB服务2:WS

      using System;
  using System.Web;
  using System.Collections;
  using System.Web.Services;
  using System.Web.Services.Protocols;
  using Microsoft.Web.Script.Services;

  /**////
  /// WS 的摘要说明
  ///
  [WebService(Namespace = [url]http://tempuri.org/[/url])]
  [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
  [ScriptService]
  public class WS : System.Web.Services.WebService {
  public WS () {
  //如果使用设计的组件,请取消注释以下行
  //InitializeComponent();
  }

  [WebMethod]
  [ScriptMethod(UseHttpGet = true)]
  public string HelloWorld(String query)
  {
  string inputString = Server.HtmlEncode(query);
  if (!String.IsNullOrEmpty(inputString))
  {
  return String.Format("hello, {0}. ", inputString);
  }
  else
  {
  return "query string is null or empty";
  }
  }
  }


 

回复:在ASP.NET 2.0 AJAX中调用Webservice

二、前台页面:

  注意要点:

  需要使用的后台WebService的方法均设置在如下位置

  Default页面:

  三、JavaScript程序:

  注意要点:

  AJAX November CTP 需要用 eval() 方法将其转换成一个DataTable对象(并且要裁掉最前面的"("),而AJAX December CTP 支持以下方法转换“Sys.Preview.Data.DataTable.parseFromJson(result)”

  function dd()
  {
  WS.HelloWorld(
  'hekui',
  function(result)
  {
  alert(result);
  }
  );

  WS1.ServerTime(
  function(result)
  {
  alert(result);
  var divTime = document.getElementById("time");
  divTime.innerHTML = result;
  }
  );

  WS1.GetDataTable(
  function(result)
  {
  // 获取到下拉框控件
  var List = document.getElementById("ddl1");
  //AJAX November CTP 需要用 eval() 方法将其转换成一个DataTable对象(并且要裁掉最前面的"(")
  var Text= result.dataArray.substring(0,result.dataArray.length -1);
  var Table = eval( Text);
  //AJAX December CTP 支持以下方法转换
  // var Table = Sys.Preview.Data.DataTable.parseFromJson(result);
  //清除下拉框原有列表项
  for (x=List.options.length-1; x > -1; x--)
  {
  List.remove(0);
  }

  //从获取的DataTable添加数据到下拉框列表项
  for (x=0; x < Table.length; x++ )
  {
  //获取每一行
  var Row = Table[x];
  //创建一个列表项
  var option = document.createElement("option");
  //列表项显示文本赋值
  option.text = Row.Name + " " + Row.LastName;
  //列表项选项值赋值
  option.value = Row.Email;
  //判断浏览器类型,进行项目添加
  if ( window.navigator.appName.toLowerCase().indexOf("microsoft") > -1)
  List.add(option);
  else
  List.add(option, null);
  }
  }
  );
  }


 
1  /  1  页   1 跳转

版权所有 拼吾爱程序人生 

Powered by Discuz!NT 2.1.202    Copyright © 2001-2008 Comsenz Inc. 鄂ICP备07500843号
返顶部