熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> ASP編程 >> 正文

ASP.NET 2.0 AJAX中Webservice調用方法

2013-11-15 12:52:41  來源: ASP編程 

  ASPNET Ajax中能夠在客戶端js中很方便地調用服務器Webservice以下為一些調用的示例筆者安裝的ASPNET AJAX
  
  版本為AJAX November CTP
  
  三個示例分別為
   帶參數的WS方法
   不帶參數的WS方法
   參數類型為DataTable的WS方法
  
  一WebMethod
  注意要點
   WebMethod類需要添加命名空間 MicrosoftWebScriptServices此空間需要引用MicrosoftWebPreviewdll
   類聲明加入標簽 [ScriptService]
  裡可以直接用DataTable作為返回類型了但是需要在nfig文件添加序列化轉換器的屬性DataSetDataTableDataRow均有轉換器
  
   <systemwebextensions>
   <scripting>
   <webServices>
   <jsonSerialization>
   <converters>
   <add name=DataSetConverter type=MicrosoftWebPreviewScriptSerializationConvertersDataSetConverter MicrosoftWebPreview/>
   <add name=DataRowConverter type=MicrosoftWebPreviewScriptSerializationConvertersDataRowConverter MicrosoftWebPreview/>
   <add name=DataTableConverter type=MicrosoftWebPreviewScriptSerializationConvertersDataTableConverter MicrosoftWebPreview/>
   </converters>
   </jsonSerialization>
   </webServices>
   </scripting>
   </systemwebextensions>
  WEB服務WS
  
  using System;
  using SystemWeb;
  using SystemCollections;
  using SystemWebServices;
  using SystemWebServicesProtocols;
  using MicrosoftWebScriptServices;
  using SystemData;
  /**//// <summary>
  /// WS 的摘要說明
  /// </summary>
  [WebService(Namespace = )]
  [WebServiceBinding(ConformsTo = WsiProfilesBasicProfile_)]
  [ScriptService]
  public class WS : SystemWebServicesWebService {
  
   public WS () {
  
   //如果使用設計的組件請取消注釋以下行
   //InitializeComponent();
   }
  
   [WebMethod]
   public string ServerTime()
   {
   return StringFormat(now {} DateTimeNow);
   }
  
   [WebMethod]
   public DataTable GetDataTable()
   {
   DataTable dt = new DataTable(Person);
  
   dtColumnsAdd(new DataColumn(Name typeof(string)));
   dtColumnsAdd(new DataColumn(LastName typeof(string)));
   dtColumnsAdd(new DataColumn(Email typeof(string)));
  
   dtRowsAdd(kui he );
   dtRowsAdd(ren chao );
  
   return dt;
   }
  }
  
  
  WEB服務WS
  
  using System;
  using SystemWeb;
  using SystemCollections;
  using SystemWebServices;
  using SystemWebServicesProtocols;
  using MicrosoftWebScriptServices;
  
  /**//// <summary>
  /// WS 的摘要說明
  /// </summary>
  [WebService(Namespace = )]
  [WebServiceBinding(ConformsTo = WsiProfilesBasicProfile_)]
  [ScriptService]
  public class WS : SystemWebServicesWebService {
  
   public WS () {
  
   //如果使用設計的組件請取消注釋以下行
   //InitializeComponent();
   }
  
   [WebMethod]
   [ScriptMethod(UseHttpGet = true)]
   public string HelloWorld(String query)
   {
   string inputString = ServerHtmlEncode(query);
   if (!StringIsNullOrEmpty(inputString))
   {
   return StringFormat(hello {} inputString);
   }
   else
   {
   return query string is null or empty;
   }
   }
  
  }

  二前台頁面
  注意要點
  需要使用的後台WebService的方法均設置在如下位置
  
   <asp:ScriptManager ID=ScriptManager runat=server>
   <Services>
   <asp:ServiceReference Path=~/WSasmx />
   <asp:ServiceReference Path=~/WSasmx />
   </Services>
   </asp:ScriptManager>
  Default頁面
  
  <%@ Page Language=C# AutoEventWireup=true CodeFile=Defaultaspxcs Inherits=_Default %>
  
  <!DOCTYPE html PUBLIC //WC//DTD XHTML //EN >
  <html xmlns=>
  <head runat=server>
   <title>Untitled Page</title>
  
   <script language=javascript type=text/javascript src=jsjs>
   </script>
  
  </head>
  <body>
   <form id=form runat=server>
   <asp:ScriptManager ID=ScriptManager runat=server>
   <Services>
   <asp:ServiceReference Path=~/WSasmx />
   <asp:ServiceReference Path=~/WSasmx />
   </Services>
   </asp:ScriptManager>
   <div>
   <asp:Button ID=Button runat=server Text=Button OnClientClick=dd();return false; />
   <div id=time>
   </div>
   <div id=List>
   <asp:DropDownList ID=ddl runat=server Width=px>
   </asp:DropDownList>
   </div>
  
   </div>
   </form>
  </body>
  </html>
  
  三JavaScript程序:
  注意要點
  AJAX November CTP 需要用 eval() 方法將其轉換成一個DataTable對象(並且要裁掉最前面的()而AJAX December CTP 支持以下方法轉換SysPreviewDataDataTableparseFromJson(result)
  
   function dd()
   {
   WSHelloWorld(
   hekui
   function(result)
   {
   alert(result);
   }
   );
   WSServerTime(
   function(result)
   {
   alert(result);
   var divTime = documentgetElementById(time);
   divTimeinnerHTML = result;
   }
   );
   WSGetDataTable(
   function(result)
   {
   // 獲取到下拉框控件
   var List = documentgetElementById(ddl);
  
   //AJAX November CTP 需要用 eval() 方法將其轉換成一個DataTable對象(並且要裁掉最前面的()
   var Text= resultdataArraysubstring(resultdataArraylength );
   var Table = eval( Text);
  
   //AJAX December CTP 支持以下方法轉換
  // var Table = SysPreviewDataDataTableparseFromJson(result);
  
   //清除下拉框原有列表項
   for (x=Listoptionslength; x > ; x)
   {
   Listremove();
   }
  
   //從獲取的DataTable添加數據到下拉框列表項
   for (x=; x < Tablelength; x++ )
   {
   //獲取每一行
   var Row = Table[x];
   //創建一個列表項
   var option = documentcreateElement(option);
   //列表項顯示文本賦值
   optiontext = RowName + + RowLastName;
   //列表項選項值賦值
   optionvalue = RowEmail;
  
   //判斷浏覽器類型進行項目添加
   if ( windownavigatorappNametoLowerCase()indexOf(microsoft) > )
   Listadd(option);
   else
   Listadd(option null);
   }
   }
   );
   }
  示例代碼
  


From:http://tw.wingwit.com/Article/program/ASP/201311/21807.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.