一:“WebService文件夹”下有一个“TxtName.asmx”文件。
其中的代码是:<%@ WebService Language="C#" CodeBehind="~/App_Code/TxtName.cs" Class="TxtName" %>二:“App_Code文件夹”下的“TxtName.cs”文件。
其中的代码如下:
using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
    /// <summary>
    /// TxtName 的摘要说明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.Web.Script.Services.ScriptService]    public class TxtName : System.Web.Services.WebService
    {        public TxtName()
        {            //如果使用设计的组件,请取消注释以下行 
            //InitializeComponent(); 
        }        [WebMethod]
        public string[] GetName(string prefixText)
        {
            return new M_BLL.T_Admin().AjaxName(prefixText);
        }    }三:在“aspx”文件中的使用实例
<%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
Namespace="System.Web.UI" TagPrefix="asp" %><cc1:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" CompletionInterval="100"
                        MinimumPrefixLength="1" ServiceMethod="GetName" ServicePath="../../WebService/TxtName.asmx"
                        TargetControlID="Txt_Name">
                    </cc1:AutoCompleteExtender>但在这里提示错误,原因可能是这个网站是.net2.0的。而小弟直接升级成.net3.5,而页面中的“Ajax”注册的是“Version=1.0.61025.0”,于是提示创建控件错误,错误信息如下:
无法创建类型“cc1:AutoCompleteExtender”。未能加载文件或程序集“System.Web.Extensions,Version=1.0.61025.0,Culture=netral,PublickeyToken=31bf3856ad364e35”
问题一:这个“WebServices”是什么作用?实现的什么功能?问题二:这里的AJAX是什么作用?实现的什么功能?问题三:“WebServices”是怎样和“AJAX”相互作用的?问题四:这里是net2.0下的AJAX版本,怎样把它改为net3.5下的AJAX版本???

解决方案 »

  1.   

    我是新手,拿到的项目写法类似,前辈告诉我说这里的WebServices是AJAX的一种实现方式。
      

  2.   

    我是上面的那个新手。我觉得。
    问题一,问题二:WebServices提供了一些“服务”,实现的是文本框自动匹配。就像Google搜索栏那样。
    问题三:
    问题四:貌似得下载一个新版放到安装目录什么的。不太懂。
      

  3.   

    1. WebServices提供了一个对外公开的接口,方便开发者调用。
    2. Ajax=>用户操作的时候一个异步,就是你操作,但是看不到页面的刷新。
    3. Ajax主要是前台Js,通过XmlHttpRequest来向WebServices发送请求,然后得到结果,然后解析显视在前台页面上.
    4.不晓得你用的那个版本的vs!
      

  4.   

    问题一 : 外部提供一个服务 你引用就行了 就好比用别人写好的dll  你的这个应该是自动完成输入功能问题二:实现无刷新自动完成输入 类似百度 你输入几个 下面自动出来一些关键字 问题三 :你用的是 微软的一套控件 AjaxControlToolkit 是通过 ScriptManager 本质是 web服务 公开给javascript调用问题四: 下载 AjaxControlToolkit 添加bll
      

  5.   

    ajax + ashx 是不错的    
    你ajax 准备直接 加载WebSerivces 数据 不经过处理么?
      

  6.   

    WebService实现Ajaxajax调用WebService 
      

  7.   

    最简单的百度效果搜AutoCompleteExtender 这个控件
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>  
       
     <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>  
       
     <!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>AJAX控件之AutoComplete</title>  
     </head>  
     <body style="text-align: center">  
        <form id="form1" runat="server">  
             <asp:ScriptManager ID="ScriptManager1" runat="server" />  
             <div>  
                 <asp:TextBox ID="MyAuto" runat="server" Width="191px"></asp:TextBox><br />  
                 <br />  
                 <cc1:AutoCompleteExtender ID="ace" runat="server" CompletionInterval="100" MinimumPrefixLength="1"  
                     ServiceMethod="GetCompletionList" ServicePath="WebService.asmx" TargetControlID="MyAuto">  
                 </cc1:AutoCompleteExtender>  
                 &nbsp;</div>  
         </form>  
    </body>  
    </html>  # using System;  
     using System.Web;  
     using System.Collections.Generic;  
     using System.Web.Services;  
     using System.Web.Services.Protocols;  
       
       
     /// <summary>  
     /// WebService 的摘要说明  
     /// </summary>  
     [WebService(Namespace = "http://tempuri.org/")]  
     [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]  
     //用以调用Web Service方法签名  
     [System.Web.Script.Services.ScriptService]  
     public class WebService : System.Web.Services.WebService {  
       
         public WebService () {}  
       
         [WebMethod]  
         public string[] GetCompletionList(string prefixText, int count)  
         {  
             //if (count == 0)  
             //{  
             //    count = 10;  
             //}  
             Random random = new Random();  
             List<string> items = new List<string>(count);  
             for (int i = 0; i < count; i++)  
             {  
                 char c1 = (char)random.Next(65,90);  
                 char c2 = (char)random.Next(97, 122);  
                 char c3 = (char)random.Next(48, 57);  
                 char c4 = (char)random.Next(33, 43);  
                 items.Add(prefixText + c1 + c2 + c3 + c4);  
             }  
             return items.ToArray();  
         }  
       
    }  
      

  8.   

    WebService提供对请求的服务,就像没有页面的asp.cs文件
    另外问下LZ,“InitializeComponent();”被注释掉了,不会影响使用吗???
    public TxtName()
      {  //如果使用设计的组件,请取消注释以下行 
      //InitializeComponent(); 
      }
      

  9.   

    AutoCompleteExtender控件,固名思义就是可以辅助TextBox控件自动输入,实现如http://dict.yodao.com/这样的效果。  AutoCompleteExtender控件的属性:
       1.TargetControlID:指定将被辅助完成自动输入的控件ID,这里的控件只能是TextBox;
       2.ServicePath:指出提供服务的WEB服务路径,若不指出则ServiceMethod表示本页面对应的方法名;
       3.ServiceMethod:指出提供服务的方法名;
       4.MinimumPrefixLength:指出开始提供提示服务时,TextBox控件应有的最小字符数,默认为3;
       5.CompletionSetCount:显示的条数,默认为10;
       6.EnableCaching:是否在客户端缓存数据,默认为true;
       7.CompletionInterval:从服务器读取数据的时间间隔,默认为1000,单位:毫秒。  ASPX页面代码:
    <body>
        <form id="form1" runat="server">
            <asp:ScriptManager runat="server" ID="ScriptManager1" />
            <ajaxToolkit:AutoCompleteExtender 
                ID="AutoCompleteExtender1" 
                runat="server"
                ServicePath="AutoComplete.asmx"
                TargetControlID="TextBox1" 
                ServiceMethod="GetTextString">
            </ajaxToolkit:AutoCompleteExtender>
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        </form>    
    </body>  WebServcie-AutoComplete.cs代码:
    using System;
    using System.Web;
    using System.Collections;
    using System.Web.Services;
    using System.Web.Services.Protocols;
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)][System.Web.Script.Services.ScriptService]public class AutoComplete : System.Web.Services.WebService {    public AutoComplete () {
        }    [WebMethod]
        public string[] GetTextString(string prefixText, int count)
        {
            string[] strArray = new string[count];        for (int i = 0; i < count; i++)
            {
                strArray[i] = prefixText + i.ToString();
            }        return strArray;
        }
    }
      在这里需要注意以下几点:
       1.由于该WEB服务是为Ajax框架提供服务的,因此在类声明之前得加上属性声明:
         [System.Web.Script.Services.ScriptService]
       2.特别需要注意的是GetTextString这个方法。凡是为AutoCompleteExtender控件提供服务的方法都必需完全满足以下三个条件:
         A.方法的返回类型必需为:string [];
         B.方法的传入参数类型必需为:string  ,   int;
         C.两个传入参数名必需为:prefixText  ,  count。