国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ASP.NET 2.0 AJAX中Webservice調用方法示例

2024-07-10 13:08:58
字體:
來源:轉載
供稿:網友

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>
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;
/**//// <summary>
/// ws1 的摘要說明
/// </summary>
[webservice(namespace = "http://tempuri.org/")]
[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 protected]");
        dt.rows.add("ren", "chao", "[email protected]");

        return dt;
    }
}


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;

/**//// <summary>
/// ws 的摘要說明
/// </summary>
[webservice(namespace = "http://tempuri.org/")]
[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";
        }
    }

}


二、前臺頁面:
注意要點:
需要使用的后臺webservice的方法均設置在如下位置

        <asp:scriptmanager id="scriptmanager1" runat="server">
            <services>
                <asp:servicereference path="~/ws.asmx" />
                <asp:servicereference path="~/ws1.asmx" />
            </services>
        </asp:scriptmanager>
default頁面:

<%@ page language="c#" autoeventwireup="true" codefile="default.aspx.cs" inherits="_default" %>

<!doctype html public "-//w3c//dtd xhtml 1.1//en" "http://www.w3.org/tr/xhtml11/dtd/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>untitled page</title>

    <script language="javascript" type="text/javascript" src="js.js">
    </script>

</head>
<body>
    <form id="form1" runat="server">
        <asp:scriptmanager id="scriptmanager1" runat="server">
            <services>
                <asp:servicereference path="~/ws.asmx" />
                <asp:servicereference path="~/ws1.asmx" />
            </services>
        </asp:scriptmanager>
        <div>
            <asp:button id="button1" runat="server" text="button" onclientclick="dd();return false;" />
            <div id="time">
            </div>
            <div id="list1">
                <asp:dropdownlist id="ddl1" runat="server" width="187px">
                </asp:dropdownlist>
                </div>
           
        </div>
    </form>
</body>
</html>

三、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);         
                            }
                         }
                       );
    }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 琼中| 盐亭县| 崇义县| 宣城市| 安国市| 九寨沟县| 蒙阴县| 兴宁市| 乌恰县| 滦平县| 马龙县| 临安市| 靖安县| 丘北县| 边坝县| 内黄县| 云梦县| 肇州县| 斗六市| 广南县| 德州市| 中西区| 乳山市| 米泉市| 上思县| 深州市| 九寨沟县| 灌云县| 鲁甸县| 博乐市| 湟中县| 北宁市| 肥西县| 友谊县| 和林格尔县| 蚌埠市| 米易县| 房产| 宜丰县| 厦门市| 阳信县|