澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

澳门新萄京官方网站:Jquery使用ajax参数详解,异

2019-06-16 作者:www.8455.com   |   浏览(67)

一、说明

【原创-算法-实现】异步HTTP请求操作,算法异步

一、说明

  1) 这个类 是我 在真实项目中,优化解决真实问题 时,不参考第三方代码,完全由自己查阅MSDN官方文档 , 完成的一个真实生产环境中使用的功能类

  2) 读者在使用此类时,请尊重原创,在代码中加上原创注释://  Author -- Meng.NET (cnblogs.com)  ,同时欢迎 二次改进、二次创作 以共同进步

  3) 此代码以【面向对象】、【C#闭包】、【异步回调】、【超时】、【等待】、【自动重试】方式实现及完成,且可以配置扩展

二、代码

  废话不多说,上干货,代码如下:

澳门新萄京官方网站 1 1 /// <summary> 2 /// 异步 Http 3 /// </summary> 4 public class Remoter 5 { 6 /* 7 * LM,2016/08/18 8 * C#闭包化,异步化,Web操作 9 * 以便支持POS多接口多操作同时使用 10 */ 11 12 /// <summary> 13 /// 请求地址 14 /// </summary> 15 public string URL { get; set; } 16 17 /// <summary> 18 /// 请求方式 19 /// </summary> 20 public string RequestMethod { get; set; } 21 22 /// <summary> 23 /// 请求数据 24 /// </summary> 25 public string JsonContent { get; set; } 26 27 // 28 private byte[] Buffer { get; set; } 29 private Stream RequestStream { get; set; } 30 private HttpWebRequest Request { get; set; } 31 private bool ResponseFlag { get; set; } 32 private string Result { get; set; } 33 private bool TimeoutFlag { get; set; } 34 private int TimeoutTime { get; set; } 35 private bool RetryFlag { get; set; } 36 private int RetryCount { get; set; } 37 private int WaitSleep { get; set; } 38 private int TrySleep { get; set; } 39 40 // 初始化 41 public Remoter() 42 { 43 // 44 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Ssl3; 45 ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback((object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) => true); 46 47 // 48 this.URL = string.Empty; 49 this.Request = default(HttpWebRequest); 50 this.JsonContent = string.Empty; 51 this.Buffer = default(byte[]); 52 this.RequestStream = default(Stream); 53 this.ResponseFlag = false; 54 this.Result = string.Empty; 55 this.TimeoutFlag = false; 56 this.TimeoutTime = 10 * 1000; 57 this.RetryFlag = false; 58 this.RetryCount = 3; 59 this.WaitSleep = 10; 60 this.RequestMethod = "POST"; 61 this.TrySleep = 2000; 62 } 63 64 /// <summary> 65 /// 获取响应数据 66 /// </summary> 67 public string GetRemoteData() 68 { 69 // 70 if(string.IsNullOrWhiteSpace(this.URL)) 71 { 72 throw new Exception("HttpAsync.URL,未赋值!"); 73 } 74 75 // 76 RemoteNew(SetResult); 77 78 // 79 var timeNum = 0; 80 while (true) 81 { 82 if (ResponseFlag) 83 { 84 break; 85 } 86 if (TimeoutFlag) 87 { 88 throw new Exception(string.Format("请求超时!超时时间:{0}S", TimeoutTime / 1000)); 89 } 90 timeNum = WaitSleep; 91 if (timeNum >= TimeoutTime) 92 { 93 TimeoutFlag = true; 94 } 95 Thread.Sleep(WaitSleep); 96 } 97 98 // 99 return Result; 100 } 101 102 // 103 private void RemoteNew(Action<Remoter, string> action) 104 { 105 // 106 var reNum = 0; 107 for (var i = 0; i < this.RetryCount; i ) 108 { 109 try 110 { 111 // 112 var uri = URL; 113 114 // 115 this.Request = WebRequest.Create(uri) as HttpWebRequest; 116 this.Request.KeepAlive = false; 117 this.Request.Method = this.RequestMethod; 118 this.Request.Credentials = CredentialCache.DefaultCredentials; 119 if (this.RequestMethod.Equals("POST", StringComparison.OrdinalIgnoreCase)) 120 { 121 this.Buffer = Encoding.UTF8.GetBytes(this.JsonContent); 122 this.Request.ContentLength = this.Buffer.Length; 123 this.Request.ContentType = "application/json"; 124 this.RequestStream = this.Request.GetRequestStream(); 125 this.RequestStream.Write(this.Buffer, 0, this.Buffer.Length); 126 this.RequestStream.Close(); 127 } 128 129 // 130 this.Request.BeginGetResponse((arr) => 131 { 132 // 133 var state = arr.AsyncState as Remoter; 134 // 135 var response = state.Request.EndGetResponse(arr) as HttpWebResponse; 136 var respStream = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("UTF-8")); 137 action(state, respStream.ReadToEnd()); 138 respStream.Close(); 139 response.Close(); 140 }, this); 141 // 142 break; 143 } 144 catch (Exception ex) 145 { 146 Thread.Sleep(this.TrySleep); 147 reNum ; 148 if (reNum == this.RetryCount) 149 { 150 throw new Exception(string.Format("重试失败!重试次数:{0}次,失败原因:{1}", this.RetryCount, ex.Message)); 151 } 152 continue; 153 } 154 } 155 } 156 private void SetResult(Remoter state, string jsonData) 157 { 158 if (!string.IsNullOrWhiteSpace(jsonData)) 159 { 160 state.Result = jsonData; 161 state.ResponseFlag = true; 162 } 163 } 164 } Remoter.cs

  使用方式:

  GET: 

澳门新萄京官方网站 21 var remoter = new Remoter(); 2 remoter.RequestMethod = "GET"; 3 remoter.URL = "这里是你要请求的URL"; 4 var response = remoter.GetRemoteData(); View Code

  POST:

澳门新萄京官方网站 31 var remoter = new Remoter(); 2 remoter.RequestMethod = "POST"; 3 remoter.URL = "你要请求的URL"; 4 remoter.JsonContent = "你要想URL发送的JSON数据"; 5 var response = remoter.GetRemoteData(); View Code

三、代码解析

    public Remoter() 初始化本类,可配置到 App.config/Web.config 中

澳门新萄京官方网站 4 1 // 2 this.URL = string.Empty; 3 this.Request = default(HttpWebRequest); 4 this.JsonContent = string.Empty; 5 this.Buffer = default(byte[]); 6 this.RequestStream = default(Stream); 7 this.ResponseFlag = false; 8 this.Result = string.Empty; 9 this.TimeoutFlag = false; 10 this.TimeoutTime = 10 * 1000; 11 this.RetryFlag = false; 12 this.RetryCount = 3; 13 this.WaitSleep = 10; 14 this.RequestMethod = "POST"; 15 this.TrySleep = 2000; 可从配置文件读取部分

  public string URL 要请求的地址

  public string RequestMethod HTTP 动词

  public string JsonContent POST 请求时,发送的json数据

  private byte[] Buffer 设置请求流的byte数组

  private Stream RequestStream 请求流

  private HttpWebRequest Request HTTP请求对象

  private bool ResponseFlag 与请求对应的响应是否成功标识

  private string Result 回调状态保持对象,保存响应结果用

  private bool TimeoutFlag 总超时时间是否超时标识

  private int TimeoutTime 总超时时间(包含若干次重试),默认10s

  private int RetryCount 总URL调用(失败)自动重试次数,默认3次

  private int WaitSleep 主线程,仿Ajax回调等待时间,默认10ms

  private int TrySleep 每次请求地址失败后,重试时间间隔,默认2s

  public string GetRemoteData()  解析:

澳门新萄京官方网站 5 1 // 2 var timeNum = 0; 3 while (true) 4 { 5 if (ResponseFlag) 6 { 7 break; 8 } 9 if (TimeoutFlag) 10 { 11 throw new Exception(string.Format("请求超时!超时时间:{0}S", TimeoutTime / 1000)); 12 } 13 timeNum = WaitSleep; 14 if (timeNum >= TimeoutTime) 15 { 16 TimeoutFlag = true; 17 } 18 Thread.Sleep(WaitSleep); 19 } 主线程,仿Ajax回调等待

  private void RemoteNew(Action<Remoter, string> action) 解析:

澳门新萄京官方网站 6 1 private void RemoteNew(Action<Remoter, string> action) 2 { 3 // 4 var reNum = 0; 5 for (var i = 0; i < this.RetryCount; i ) 6 { 7 try 8 { 9 // 此处省略 10 //... ... 11 12 // 13 break; 14 } 15 catch (Exception ex) 16 { 17 Thread.Sleep(this.TrySleep); 18 reNum ; 19 if (reNum == this.RetryCount) 20 { 21 throw new Exception(string.Format("重试失败!重试次数:{0}次,失败原因:{1}", this.RetryCount, ex.Message)); 22 } 23 continue; 24 } 25 } 26 } 调用URL失败,自动重试机制 澳门新萄京官方网站 7 1 // 2 this.Request.BeginGetResponse((arr) => 3 { 4 // 5 var state = arr.AsyncState as Remoter; 6 // 7 var response = state.Request.EndGetResponse(arr) as HttpWebResponse; 8 var respStream = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("UTF-8")); 9 action(state, respStream.ReadToEnd()); 10 respStream.Close(); 11 response.Close(); 12 }, this); 异步响应回调,闭包与自状态保持

   private void SetResult(Remoter state, string jsonData) 解析:

澳门新萄京官方网站 81 state.Result = jsonData; 2 state.ResponseFlag = true; 异步响应成功后,在状态保持中赋值结果

四、计划中的开源项目...

    计划后续会将生产中解决问题的诸多地方汇集成一个项目【Meng.Net.dll】并开源至GitHub上,欢迎交流,共同提高~~

  至于本文所讲的类会在哪个命名空间中,还没想好,项目的整体结构及主打方向,敬请期待......

 

                                         蒙

                                    2016-09-24  22:37  周六

 

 

 

             支付宝打赏:                                    微信打赏:  

       澳门新萄京官方网站 9               澳门新萄京官方网站 10

 

一、说明 1) 这个类 是我 在真实项目中,优化解决真实问题 时,不参考第三方代码,完全...

记录一下  Jquery使用ajax(post.get及参数详解)

1、get:

  1) 这个类 是我 在真实项目中,优化解决真实问题 时,不参考第三方代码,完全由自己查阅MSDN官方文档 , 完成的一个真实生产环境中使用的功能类

1、get:

$.ajax({
            type: "GET",
            url: baseUrl   "Showcontent/del_user?type=1&id="   id   "&r="   Math.random(),
            async: true,
            error: function () {
                alert("Connection error");
            },
            success: function (data) {
                $("#content").html(data); //data即为后台返回的数据
            }
        })

  2) 读者在使用此类时,请尊重原创,在代码中加上原创注释://  Author -- Meng.NET (cnblogs.com)  ,同时欢迎 二次改进、二次创作 以共同进步

 1 $.ajax({
 2             type: "GET",
 3             url: baseUrl   "Showcontent/del_user?type=1&id="   id   "&r="   Math.random(),
 4             async: true,
 5             error: function () {
 6                 alert("Connection error");
 7             },
 8             success: function (data) {
 9                 $("#content").html(data); //data即为后台返回的数据
10             }
11         })

 2、post:

  3) 此代码以【面向对象】、【C#闭包】、【异步回调】、【超时】、【等待】、【自动重试】方式实现及完成,且可以配置扩展

2.post:

$.ajax({
        type: "POST",
        url: baseUrl   "Showcontent/modify_user?r="   Math.random(),
        async: true,
        data: $('#form_add').serialize(),//post参数
        error: function () {
            alert("Connection error");
        },
        success: function (data) {
            $("#content").html(data); //data即为后台返回的数据
        }
    })

二、代码

$.ajax({
        type: "POST",
        url: baseUrl   "Showcontent/modify_user?r="   Math.random(),
        async: true,
        data: $('#form_add').serialize(),//post参数
        error: function () {
            alert("Connection error");
        },
        success: function (data) {
            $("#content").html(data); //data即为后台返回的数据
        }
    })

 3、参数解释

  废话不多说,上干货,代码如下:

 3、参数解释

(1)type: 请求方式,默认为GET。一般只用到“GET”,“POST”;类型:string

澳门新萄京官方网站 11澳门新萄京官方网站 12

(1)type: 请求方式,默认为GET。一般只用到“GET”,“POST”;类型:string

(2)url:请求的地址;类型:string

  1     /// <summary>
  2     /// 异步 Http
  3     /// </summary>
  4     public class Remoter
  5     {
  6         /*
  7          * LM,2016/08/18
  8          * C#闭包化,异步化,Web操作
  9          * 以便支持POS多接口多操作同时使用
 10          */
 11 
 12         /// <summary>
 13         /// 请求地址
 14         /// </summary>
 15         public string URL { get; set; }
 16 
 17         /// <summary>
 18         /// 请求方式
 19         /// </summary>
 20         public string RequestMethod { get; set; }
 21 
 22         /// <summary>
 23         /// 请求数据
 24         /// </summary>
 25         public string JsonContent { get; set; }
 26 
 27         //
 28         private byte[] Buffer { get; set; }        
 29         private Stream RequestStream { get; set; }        
 30         private HttpWebRequest Request { get; set; }        
 31         private bool ResponseFlag { get; set; }        
 32         private string Result { get; set; }        
 33         private bool TimeoutFlag  { get; set; }        
 34         private int TimeoutTime { get; set; }        
 35         private bool RetryFlag { get; set; }        
 36         private int RetryCount  { get; set; }        
 37         private int WaitSleep { get; set; }        
 38         private int TrySleep { get; set; }
 39 
 40         // 初始化
 41         public Remoter()
 42         {
 43             //
 44             ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Ssl3;
 45             ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback((object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) => true);
 46 
 47             // 
 48             this.URL = string.Empty;
 49             this.Request = default(HttpWebRequest);
 50             this.JsonContent = string.Empty;
 51             this.Buffer = default(byte[]);
 52             this.RequestStream = default(Stream);
 53             this.ResponseFlag = false;
 54             this.Result = string.Empty;
 55             this.TimeoutFlag = false;
 56             this.TimeoutTime = 10 * 1000;
 57             this.RetryFlag = false;
 58             this.RetryCount = 3;
 59             this.WaitSleep = 10;
 60             this.RequestMethod = "POST";
 61             this.TrySleep = 2000;
 62         }
 63         
 64         /// <summary>
 65         /// 获取响应数据
 66         /// </summary>
 67         public string GetRemoteData()
 68         {
 69             //
 70             if(string.IsNullOrWhiteSpace(this.URL))
 71             {
 72                 throw new Exception("HttpAsync.URL,未赋值!");
 73             }
 74 
 75             // 
 76             RemoteNew(SetResult); 
 77 
 78             //
 79             var timeNum = 0;
 80             while (true)
 81             {
 82                 if (ResponseFlag)
 83                 {
 84                     break;
 85                 }
 86                 if (TimeoutFlag)
 87                 {
 88                     throw new Exception(string.Format("请求超时!超时时间:{0}S", TimeoutTime / 1000));
 89                 }
 90                 timeNum  = WaitSleep;
 91                 if (timeNum >= TimeoutTime)
 92                 {
 93                     TimeoutFlag = true;
 94                 }
 95                 Thread.Sleep(WaitSleep);
 96             }
 97 
 98             //
 99             return Result;
100         }
101 
102         // 
103         private void RemoteNew(Action<Remoter, string> action) 
104         {
105             //
106             var reNum = 0;
107             for (var i = 0; i < this.RetryCount; i  )
108             {
109                 try
110                 {
111                     //
112                     var uri = URL;
113 
114                     //
115                     this.Request = WebRequest.Create(uri) as HttpWebRequest;
116                     this.Request.KeepAlive = false;
117                     this.Request.Method = this.RequestMethod;
118                     this.Request.Credentials = CredentialCache.DefaultCredentials;
119                     if (this.RequestMethod.Equals("POST", StringComparison.OrdinalIgnoreCase))
120                     {
121                         this.Buffer = Encoding.UTF8.GetBytes(this.JsonContent);
122                         this.Request.ContentLength = this.Buffer.Length;
123                         this.Request.ContentType = "application/json";
124                         this.RequestStream = this.Request.GetRequestStream();
125                         this.RequestStream.Write(this.Buffer, 0, this.Buffer.Length);
126                         this.RequestStream.Close();
127                     }
128 
129                     //
130                     this.Request.BeginGetResponse((arr) =>
131                     {
132                         //
133                         var state = arr.AsyncState as Remoter;
134                         //
135                         var response = state.Request.EndGetResponse(arr) as HttpWebResponse;
136                         var respStream = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("UTF-8"));
137                         action(state, respStream.ReadToEnd());
138                         respStream.Close();
139                         response.Close();
140                     }, this);
141                     //
142                     break;
143                 }
144                 catch (Exception ex)
145                 {
146                     Thread.Sleep(this.TrySleep);
147                     reNum  ;
148                     if (reNum == this.RetryCount)
149                     {
150                         throw new Exception(string.Format("重试失败!重试次数:{0}次,失败原因:{1}", this.RetryCount, ex.Message));
151                     }
152                     continue;
153                 }
154             }
155         }        
156         private void SetResult(Remoter state, string jsonData)
157         {
158             if (!string.IsNullOrWhiteSpace(jsonData))
159             {
160                 state.Result = jsonData;
161                 state.ResponseFlag = true;
162             }
163         }
164     }

(2)url:请求的地址;类型:string

(3)async:默认true,true-请求为异步请求,false-请求为同步请求(同步请求将锁住浏览器,用户其他操作必须等 待请求完成才可以执行);类型:bool

Remoter.cs

(3)async:默认true,true-请求为异步请求,false-请求为同步请求(同步请求将锁住浏览器,用户其他操作必须等 待请求完成才可以执行);类型:bool

(4)timeout: 设置请求超时时间(毫秒);类型:int

  使用方式:

(4)timeout: 设置请求超时时间(毫秒);类型:int

(5)cache:默认为true(当dataType为script时,默认为false); 设置为false将不会从浏览器缓存中加载请求信息;类型:bool

  GET: 

澳门新萄京官方网站:Jquery使用ajax参数详解,异步HTTP请求操作。(5)cache:默认为true(当dataType为script时,默认为false); 设置为false将不会从浏览器缓存中加载请求信息;类型:bool

(6)data: 发送到服务器的数据(例:a:"a",b:"b"  $('#formid').serialize()自动转换form表单);类型:string

澳门新萄京官方网站 13澳门新萄京官方网站 14

(6)data: 发送到服务器的数据(例:a:"a",b:"b"  $('#formid').serialize()自动转换form表单);类型:string

(7)dataType: 预期服务器返回的数据类型。如果不指定,JQuery将自动根据http包mime信息返回responseXML或responseText,并作为回调函数参数传递。);类型:string

1 var remoter = new Remoter();
2 remoter.RequestMethod = "GET";
3 remoter.URL = "这里是你要请求的URL";
4 var response = remoter.GetRemoteData();

(7)dataType: 预期服务器返回的数据类型。如果不指定,JQuery将自动根据http包mime信息返回responseXML或responseText,并作为回调函数参数传递。);类型:string

          可用的类型如下:

View Code

          可用的类型如下:

          xml:返回XML文档,可用JQuery处理。

  POST:

          xml:返回XML文档,可用JQuery处理。

          html:返回纯文本HTML信息;包含的script标签会在插入DOM时执行。

澳门新萄京官方网站 15澳门新萄京官方网站 16

          html:返回纯文本HTML信息;包含的script标签会在插入DOM时执行。

          script:返回纯文本JavaScript代码。不会自动缓存结果。除非设置了cache参数。注意在远程请求

1 var remoter = new Remoter();
2 remoter.RequestMethod = "POST";
3 remoter.URL = "你要请求的URL";
4 remoter.JsonContent = "你要想URL发送的JSON数据";
5 var response = remoter.GetRemoteData();

          script:返回纯文本JavaScript代码。不会自动缓存结果。除非设置了cache参数。注意在远程请求

                  时(不在同一个域下),所有post请求都将转为get请求。

View Code

                  时(不在同一个域下),所有post请求都将转为get请求。

          json:返回JSON数据。

三、代码解析

          json:返回JSON数据。

          jsonp:JSONP格式。使用SONP形式调用函数时,例如myurl?callback=?,JQuery将自动替换后一个

    public Remoter() 初始化本类,可配置到 App.config/Web.config 中

          jsonp:JSONP格式。使用SONP形式调用函数时,例如myurl?callback=?,JQuery将自动替换后一个

                “?”为正确的函数名,以执行回调函数。

澳门新萄京官方网站 17澳门新萄京官方网站 18

                “?”为正确的函数名,以执行回调函数。

          text:返回纯文本字符串。

 1             // 
 2             this.URL = string.Empty;
 3             this.Request = default(HttpWebRequest);
 4             this.JsonContent = string.Empty;
 5             this.Buffer = default(byte[]);
 6             this.RequestStream = default(Stream);
 7             this.ResponseFlag = false;
 8             this.Result = string.Empty;
 9             this.TimeoutFlag = false;
10             this.TimeoutTime = 10 * 1000;
11             this.RetryFlag = false;
12             this.RetryCount = 3;
13             this.WaitSleep = 10;
14             this.RequestMethod = "POST";
15             this.TrySleep = 2000;

          text:返回纯文本字符串。

(8)beforeSend:发送请求前可以修改XMLHttpRequest对象的函数,例如添加自定义HTTP头。在beforeSend中如果返回false可以取消本次ajax请求。XMLHttpRequest对象是惟一的参数。

可从配置文件读取部分

(8)beforeSend:发送请求前可以修改XMLHttpRequest对象的函数,例如添加自定义HTTP头。在beforeSend中如果返回false可以取消本次ajax请求。XMLHttpRequest对象是惟一的参数。

            function(XMLHttpRequest){

  public string URL 要请求的地址

            function(XMLHttpRequest){

               this;   //调用本次ajax请求时传递的options参数

  public string RequestMethod HTTP 动词

               this;   //调用本次ajax请求时传递的options参数

            }

  public string JsonContent POST 请求时,发送的json数据

            }

(9)complete:请求完成后调用的回调函数(请求成功或失败时均调用)。参数:XMLHttpRequest对象和一个描述成功请求类型的字符串。

  private byte[] Buffer 设置请求流的byte数组

(9)complete:请求完成后调用的回调函数(请求成功或失败时均调用)。参数:XMLHttpRequest对象和一个描述成功请求类型的字符串。

          function(XMLHttpRequest, textStatus){

  private Stream RequestStream 请求流

          function(XMLHttpRequest, textStatus){

             this;    //调用本次ajax请求时传递的options参数

  private HttpWebRequest Request HTTP请求对象

             this;    //调用本次ajax请求时传递的options参数

          }

  private bool ResponseFlag 与请求对应的响应是否成功标识

          }

(10)success:请求成功后调用的回调函数,有两个参数。

  private string Result 回调状态保持对象,保存响应结果用

(10)success:请求成功后调用的回调函数,有两个参数。

         1)由服务器返回,并根据dataType参数进行处理后的数据。

  private bool TimeoutFlag 总超时时间是否超时标识

         1)由服务器返回,并根据dataType参数进行处理后的数据。

         2)描述状态的字符串。

  private int TimeoutTime 总超时时间(包含若干次重试),默认10s

         2)描述状态的字符串。

         function(data, textStatus){

  private int RetryCount 总URL调用(失败)自动重试次数,默认3次

         function(data, textStatus){

            //data可能是xmlDoc、jsonObj、html、text等等

  private int WaitSleep 主线程,仿Ajax回调等待时间,默认10ms

            //data可能是xmlDoc、jsonObj、html、text等等

            this;  //调用本次ajax请求时传递的options参数

  private int TrySleep 每次请求地址失败后,重试时间间隔,默认2s

            this;  //调用本次ajax请求时传递的options参数

(12)error:请求失败时被调用的函数。该函数有3个参数,即XMLHttpRequest对象、错误信息、捕获的错误对象(可选)。

  public string GetRemoteData()  解析:

(12)error:请求失败时被调用的函数。该函数有3个参数,即XMLHttpRequest对象、错误信息、捕获的错误对象(可选)。

       ajax事件函数如下:

澳门新萄京官方网站 19澳门新萄京官方网站 20

       ajax事件函数如下:

       function(XMLHttpRequest, textStatus, errorThrown){

 1             //
 2             var timeNum = 0;
 3             while (true)
 4             {
 5                 if (ResponseFlag)
 6                 {
 7                     break;
 8                 }
 9                 if (TimeoutFlag)
10                 {
11                     throw new Exception(string.Format("请求超时!超时时间:{0}S", TimeoutTime / 1000));
12                 }
13                 timeNum  = WaitSleep;
14                 if (timeNum >= TimeoutTime)
15                 {
16                     TimeoutFlag = true;
17                 }
18                 Thread.Sleep(WaitSleep);
19             }

       function(XMLHttpRequest, textStatus, errorThrown){

          //通常情况下textStatus和errorThrown只有其中一个包含信息

主线程,仿Ajax回调等待

          //通常情况下textStatus和errorThrown只有其中一个包含信息

          this;   //调用本次ajax请求时传递的options参数

  private void RemoteNew(Action<Remoter, string> action) 解析:

          this;   //调用本次ajax请求时传递的options参数

       }

澳门新萄京官方网站 21澳门新萄京官方网站 22

       }

(13)contentType:当发送信息至服务器时,内容编码类型默认为"application/x-www-form-urlencoded"。该默认值适合大多数应用场合;类型:string

 1         private void RemoteNew(Action<Remoter, string> action) 
 2         {
 3             //
 4             var reNum = 0;
 5             for (var i = 0; i < this.RetryCount; i  )
 6             {
 7                 try
 8                 {
 9                     // 此处省略
10                     //... ...
11 
12                     //
13                     break;
14                 }
15                 catch (Exception ex)
16                 {
17                     Thread.Sleep(this.TrySleep);
18                     reNum  ;
19                     if (reNum == this.RetryCount)
20                     {
21                         throw new Exception(string.Format("重试失败!重试次数:{0}次,失败原因:{1}", this.RetryCount, ex.Message));
22                     }
23                     continue;
24                 }
25             }
26         }                        

(13)contentType:当发送信息至服务器时,内容编码类型默认为"application/x-www-form-urlencoded"。该默认值适合大多数应用场合;类型:string

(14)dataFilter:给Ajax返回的原始数据进行预处理的函数。

调用URL失败,自动重试机制

(14)dataFilter:给Ajax返回的原始数据进行预处理的函数。

            提供data和type两个参数。data是Ajax返回的原始数据,type是调用jQuery.ajax时提供的

澳门新萄京官方网站 23澳门新萄京官方网站 24

            提供data和type两个参数。data是Ajax返回的原始数据,type是调用jQuery.ajax时提供的

            dataType参数。函数返回的值将由jQuery进一步处理。

 1                     //
 2                     this.Request.BeginGetResponse((arr) =>
 3                     {
 4                         //
 5                         var state = arr.AsyncState as Remoter;
 6                         //
 7                         var response = state.Request.EndGetResponse(arr) as HttpWebResponse;
 8                         var respStream = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("UTF-8"));
 9                         action(state, respStream.ReadToEnd());
10                         respStream.Close();
11                         response.Close();
12                     }, this);

            dataType参数。函数返回的值将由jQuery进一步处理。

            function(data, type){

异步响应回调,闭包与自状态保持

            function(data, type){

                //返回处理后的数据

   private void SetResult(Remoter state, string jsonData) 解析:

                //返回处理后的数据

                return data;

澳门新萄京官方网站 25澳门新萄京官方网站 26

                return data;

            }

1                 state.Result = jsonData;
2                 state.ResponseFlag = true;

            }

(15)global:默认为true。表示是否触发全局ajax事件。设置为false将不会触发全局ajax事件,ajaxStart或ajaxStop可用于控制各种ajax事件;类型:bool

异步响应成功后,在状态保持中赋值结果

(15)global:默认为true。表示是否触发全局ajax事件。设置为false将不会触发全局ajax事件,ajaxStart或ajaxStop可用于控制各种ajax事件;类型:bool

(16)ifModified:默认为false。仅在服务器数据改变时获取新数据。 服务器数据改变判断的依据是Last-Modified头信息。默认值是false,即忽略头信息;类型:bool

四、计划中的开源项目...

(16)ifModified:默认为false。仅在服务器数据改变时获取新数据。 服务器数据改变判断的依据是Last-Modified头信息。默认值是false,即忽略头信息;类型:bool

(17)jsonp:,在一个jsonp请求中重写回调函数的名字。 该值用来替代在"callback=?"这种GET或POST请求中URL参数里的"callback"部分;类型:string

    计划后续会将生产中解决问题的诸多地方汇集成一个项目【Meng.Net.dll】并开源至GitHub上,欢迎交流,共同提高~~

(17)jsonp:,在一个jsonp请求中重写回调函数的名字。 该值用来替代在"callback=?"这种GET或POST请求中URL参数里的"callback"部分;类型:string

    例如:{jsonp:'onJsonPLoad'}会导致将"onJsonPLoad=?"传给服务器。

  至于本文所讲的类会在哪个命名空间中,还没想好,项目的整体结构及主打方向,敬请期待......

    例如:{jsonp:'onJsonPLoad'}会导致将"onJsonPLoad=?"传给服务器。

(18)username:用于响应HTTP访问认证请求的用户名;类型:string

 

(18)username:用于响应HTTP访问认证请求的用户名;类型:string

(19)password:用于响应HTTP访问认证请求的密码;类型:string

                                         蒙

(19)password:用于响应HTTP访问认证请求的密码;类型:string

(20)processData:默认为true。默认情况下,发送的数据将被转换为对象(从技术角度来讲并非字符串)以配合默认内容类型"application/x-www-form-urlencoded";类型:bool

                                    2016-09-24  22:37  周六

(20)processData:默认为true。默认情况下,发送的数据将被转换为对象(从技术角度来讲并非字符串)以配合默认内容类型"application/x-www-form-urlencoded";类型:bool

    如果要发送DOM树信息或者其他不希望转换的信息,请设置为false。

 

    如果要发送DOM树信息或者其他不希望转换的信息,请设置为false。

(21)scriptCharset:只有当请求时dataType为"jsonp"或者"script",并且type是GET时才会用于强制修改字符集(charset)。通常在本地和远程的内容编码不同时使用;类型:string

 

(21)scriptCharset:只有当请求时dataType为"jsonp"或者"script",并且type是GET时才会用于强制修改字符集(charset)。通常在本地和远程的内容编码不同时使用;类型:string

 

 

       

                    

 

本文由澳门新萄京官方网站发布于www.8455.com,转载请注明出处:澳门新萄京官方网站:Jquery使用ajax参数详解,异

关键词:

  • 上一篇:没有了
  • 下一篇:没有了