Jquery Ajax 之 Web Service调用与安全

文章标签: android,web-service,c#
2014-12-17 17:03:33     人阅读    

本文只代表作者在一定阶段的认识与理解,如果管理员觉得放在首先不合适,请帮忙挪动,谢谢!
 一.写作前提 
   我相信很多人都使用过MSVS提供的Ajax控件,的确他们非常好用,但有些时候我们可能不需要使用这些控件,而是通过直接写脚本的方式来获取数据,这几天在我的项目中就遇到需要使用ajax调用Web Servcie,返回Json。由于之前从来没有使用和接触过Web Service,所以在应用的过程也遇到一些小问题,想和大家分享一下,并期待博友的指点。
二.Jquery Ajax 语法及我遇到的问题  
  关于Jquery Ajax的具体语法可以到Jquery的官方网站上查看(http://api.jquery.com/jQuery.ajax/),这里我们只针对常用的属性做一些说明。  
  Ajax的基本语法如下:

1   $.ajax({
2      contentType: "application/json; charset=utf-8",
3      type: "POST",
4      data: '{ workerPassOid: ' + workerPassOid + ' }',
5      url: '../Services/ManpowerService.asmx/GetPassExtendHistory',
6      dataType: "json",
7      success: function(msg) {
8      },
9      failure: function(msg) {
10      },
11      error: function(xhr, ajaxOptions, thrownError) {
12      }
13 });

  请我们来对这些参数作一下简单的介绍:
contenttype: 发送请求消息至服务器的编码类型 
type: 请求方式(get,post),默认是get方式
data: 发送到服务器端数据,常为服务器端方法提供参数

url: 请求的地址

datatype: 预期服务器返回的数据类型(主要有xml, html, script, json, jsonp)
success: 请求成功后执行的回调函数
failuer: 请求失败后执行的回调函数
error: 请求出错后执行的回调函数
  除了上面这些属性以外,还有如下属性也会经常被使用到  

timeout: 设置请求超时的时间 
async: 是否采用异步请求的方式,默认值为true即采用异步请求的方式
complete: 调用完成后执行的函数
  我的问题
  其实我的问题表现的很明显,就是使用了contentType: "application/json; charset=utf-8",使用了它,也就是表示我们的请教消息将会以json的形式提交至服务器,但是在data属性那里,我并没有提供对应的格式,当然他 
 
http://www.cnblogs.com/jams742003/archive/2009/09/16/1567771.html 
 
三.Web Service 安全及异常处理 
 
 
四.总结  
 
 

1 <a href="javascript:ShowPassExtendHistory(4)">test</a>
2
3  <script type="text/javascript">
4         function ShowPassExtendHistory(workerPassOid) {
5             $('#DivContent').html("<img src=../Images/loading4.gif>");
6             $.ajax({
7                 contentType: "application/json; charset=utf-8",
8                 type: "POST",
9                 data: '{ workerPassOid: ' + workerPassOid + ' }',
10                 url: '../Services/ManpowerService.asmx/GetPassExtendHistory',
11                 dataType: "json",
12                 success: function(msg) {
13                     var extendHistories = msg.d;
14                     $('#DivContent').empty();
15                     var result = GenerateTable();
16                     //get header
17                      result += GenerateRow();
18                     result += GenerateHeaderColumn("Extend Date");
19                     result += GenerateHeaderColumn("Created By");
20                     result += GenerateHeaderColumn("Created Date");
21                     result += CloseRow();
22
23                     // get each row
24                      $.each(extendHistories, function(index, history) {
25                         result += GenerateRow();
26                         result += GenerateDataColumn(history.ExtendEndDate);
27                         result += GenerateDataColumn(history.CreatedBy);
28                         result += GenerateDataColumn(history.ExtendEndDate);
29                         result += CloseRow();
30                     });
31                     result += CloseTable();
32                     $('#DivContent').append(result);
33                 },
34                 failure: function(msg) {
35                     alert(msg);
36                 },
37                 error: function(xhr, ajaxOptions, thrownError) {
38                     if (xhr && xhr.responseText) {
39                         var obj = eval("(" + xhr.responseText + ')');
40                         alert(obj.Message);
41                         $('#dialog').dialog('close');
42                     }
43                 }
44             });
45             //set title
46              $("#dialog").dialog("option", "title", 'Pass Extend History');
47             //show dialog
48              $('#dialog').dialog('open');
49             return false;
50         }
51     </script>
52
53     <div id="dialog">
54         <div id="DivContent">
55         </div>
56     </div>

 
 
 


 
 
 

1 using System;
2  using System.Collections.Generic;
3  using System.Linq;
4  using System.Web;
5  using System.Web.Services;
6 using CWS.Custom.Contract.ManPower;
7 using CWS.Custom.Common.ProxyFactory;
8 using CWS.Custom.Service.ManPower;
9 using CWS.Custom.DataAccess.ManPower;
10 using CWS.Custom.Common.StructData;
11 using CWS.Custom.Contract.UserRoleFunction;
12 using CWS.Custom.Service.UserRoleFunction;
13
14 namespace CWS.Custom.WebUI.ManPower.Services
15 {
16     /// <summary>
17     /// Summary description for ManpoerService
18     /// </summary>
19     [WebService(Namespace = "http://tempuri.org/")]
20     [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
21     [System.ComponentModel.ToolboxItem(false)]
22     // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
23     [System.Web.Script.Services.ScriptService]
24     public class ManpowerService : System.Web.Services.WebService
25     {
26         private IWorker _w;
27         private IUser _u;
28
29         public ManpowerService()
30         {
31             this._w = PolicyFactory<WorkerS, IWorker>.Create();
32             this._u = PolicyFactory<UserS, IUser>.Create();
33         }
34
35
36         /// <summary>
37         /// get manpower pass extend histroy records
38         /// </summary>
39         /// <createdy>xiong wei</createdy>
40         /// <createddate>30 sep 2010</createddate>
41         /// <param name="workerPassOid"></param>
42         /// <returns></returns>
43         [WebMethod(EnableSession = true)]
44         public List<object> GetPassExtendHistory(long workerPassOid)
45         {
46
47             if (HttpContext.Current.Session["Session_UserName"] == null
48                 || string.IsNullOrEmpty(HttpContext.Current.Session["Session_UserName"].ToString()))
49             {
50                 throw new Exception(Messages.Common.WebServiceAuthtication);
51             }
52
53             T_BC_WORKER_PASS workerPass = this._w.GetWorkerPassByOid(workerPassOid);
54             List<object> result = new List<object>();
55
56             if (workerPass != null)
57             {
58                 var tempResult = (from h in workerPass.T_BC_WORKER_PASS_EXTENDs
59                                   where h.Status == ConstantManager.Common.StatuActiveValue
60                                   select new
61                                   {
62                                       ExtendEndDate = h.ExtendEndDate.ToString(ConstantManager.Common.DataFormat),
63                                       CreateDateTime = h.CreateDateTime.ToString(ConstantManager.Common.DataFormat),
64                                       CreatedBy = this._u.GetUserByOid(h.CreateBy).UserFullName
65                                   }).ToList();
66
67                 if (tempResult.Count == 0)
68                 {
69                     return result;
70                 }
71
72                 foreach (var item in tempResult)
73                 {
74                     result.Add(item);
75                 }
76             }
77             return result;
78         }
79     }
80 }

 
 


原文地址:http://www.itmmd.com/201412/334.html
该文章由 萌萌的IT人 整理发布,转载须标明出处。

Android listview 变成 checkbox listview   上一篇
下一篇  升级SDK Manager后引起的Android Developer ToolKit版本不一致问题
精彩回复
我要追加问题,请求站长解决!
姓名:       

《程序员app》专门为程序员量身定做!