AJAX调用方式总结(4)

来源:互联网 发布:div调用js方法 编辑:程序博客网 时间:2024/05/19 23:53

长篇大论来讲述什么是AJAX,怎么使用AJAX,这样我总觉得太理论化了,接受起来会有一定的难度...所以,本篇博客的另一个主旨是:从实例入手,由浅到深。

实例四:ajax调用wcf获取数据

首先贴上模块图:

 

首先定义好数据契约和操作契约,贴上StudentService.svc代码:

  1. StudentService.svc  
  2.  namespace ajaxwcf  
  3.  {  
  4.      [ServiceContract(Namespace = "")]  
  5.      [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]  
  6.      public class StudentService  
  7.      {  
  8.          // 要使用 HTTP GET,请添加 [WebGet] 特性。(默认 ResponseFormat 为 WebMessageFormat.Json)  
  9.          // 要创建返回 XML 的操作,  
  10.          //     请添加 [WebGet(ResponseFormat=WebMessageFormat.Xml)],  
  11.          //     并在操作正文中包括以下行:  
  12.          //         WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml";  
  13.          [OperationContract]  
  14.          //获取学生数据  
  15.          public List<Student> GetStudents()  
  16.          {  
  17.              string sqlConn = ConfigurationManager.ConnectionStrings["SqlConn"].ConnectionString;  
  18.              SqlConnection conn = new SqlConnection(sqlConn);  
  19.              SqlDataAdapter da = new SqlDataAdapter("select * from AJAX_Tab", conn);  
  20.              DataSet ds = new DataSet();  
  21.              da.Fill(ds);  
  22.              List<Student> Stulis = new List<Student>();  
  23.              DataTable dt = ds.Tables[0];  
  24.              Student student = null;  
  25.              foreach (DataRow row in dt.Rows)  
  26.              {  
  27.                  student = new Student();  
  28.                  student.Sname = row["sname"].ToString();  
  29.                  student.Sage = row["sage"].ToString();  
  30.                  student.Sadd = row["sadd"].ToString();  
  31.    
  32.                  Stulis.Add(student);  
  33.              }  
  34.    
  35.              return Stulis;  
  36.          }  
  37.      }  
  38.    
  39.      //数据契约  
  40.      [DataContract]  
  41.      public class Student  
  42.      {  
  43.          private string sname;  
  44.    
  45.          [DataMember]  
  46.          public string Sname  
  47.          {  
  48.              get { return sname; }  
  49.              set { sname = value; }  
  50.          }  
  51.          private string sage;  
  52.    
  53.          [DataMember]  
  54.          public string Sage  
  55.          {  
  56.              get { return sage; }  
  57.              set { sage = value; }  
  58.          }  
  59.          private string sadd;  
  60.    
  61.          [DataMember]  
  62.          public string Sadd  
  63.          {  
  64.              get { return sadd; }  
  65.              set { sadd = value; }  
  66.          }  
  67.      }  
  68.  } 

在web.config中进行配置,上代码:

  1. web.config   
  2.   <system.serviceModel>  
  3.          <behaviors>  
  4.              <endpointBehaviors>  
  5.                  <behavior name="ajaxwcf.StudentServiceAspNetAjaxBehavior">  
  6.                      <enableWebScript />  
  7.                  </behavior>  
  8.              </endpointBehaviors>  
  9.              <serviceBehaviors>  
  10.                  <behavior name="MyServiceTypeBehaviors">  
  11.                      <serviceMetadata httpGetEnabled="true" />  
  12.                  </behavior>  
  13.                  <behavior name="">  
  14.                      <serviceMetadata httpGetEnabled="true" />  
  15.                      <serviceDebug includeExceptionDetailInFaults="false" />  
  16.                  </behavior>  
  17.              </serviceBehaviors>  
  18.          </behaviors>  
  19.          <serviceHostingEnvironment aspNetCompatibilityEnabled="true" 
  20.              multipleSiteBindingsEnabled="true" />  
  21.          <services>  
  22.              <service name="ajaxwcf.StudentService" behaviorConfiguration="MyServiceTypeBehaviors">  
  23.                  <endpoint address="" behaviorConfiguration="ajaxwcf.StudentServiceAspNetAjaxBehavior" 
  24.                      binding="webHttpBinding" contract="ajaxwcf.StudentService" />  
  25.              </service>  
  26.          </services>  
  27.      </system.serviceModel> 

好了,这样wcf就配置好了,接下去就是页面端的调用了,贴上ajax_wcf.aspx前台页面代码:

  1. <script type="text/javascript">  
  2.        //载入WCF  
  3.        function loadWCF() {  
  4.           var student = new StudentService();    
  5.           arr = student.GetStudents(succeededCallback, filedCallback);           
  6.        }  
  7.        //成功  
  8.        function succeededCallback(result, userContext, methodName) {  
  9.            var arr = new Array();  
  10.            arr = result;  
  11.            //动态创建表格信息 并赋值  
  12.            var table = document.getElementById("ajaxTab");  
  13.            for (var i = 0; i < arr.length; i++) {  
  14.                var tr = document.createElement("tr");  
  15.                var td1 = document.createElement("td");  
  16.                td1.innerHTML = arr[i].Sname;  
  17.  
  18.                var td2 = document.createElement("td");  
  19.                td2.innerHTML = arr[i].Sage;  
  20.  
  21.                var td3 = document.createElement("td");  
  22.                td3.innerHTML = arr[i].Sadd;  
  23.  
  24.  
  25.                tr.appendChild(td1);  
  26.                tr.appendChild(td2);  
  27.                tr.appendChild(td3);  
  28.  
  29.                table.appendChild(tr);  
  30.            }  
  31.        }  
  32.  
  33.        //失败  
  34.        function filedCallback(error,userContext,methodName) {  
  35.            alert("Error!");  
  36.         } 

这样整个项目就完成了,接下去贴效果:

调用前:

 

调用后:

 



原创粉丝点击