jquery+ajax 的 data参数设置的内容,如何在HttpHandler的HttpContext中取得(包括post方式和get方式)

2012年2月28日 于新城科技园

jquery+ajax 的 data参数设置的内容,如何在HttpHandler的HttpContext中取得(包括post方式和get方式)

比如 :

注意:要引用两个jquery的包,一个是jquery-1.6.2.js 和 jquery.json.js 都直接在 网上下载就可以了。

[html]  view plain copy
  1. <!DOCTYPE html>    
  2. <html>    
  3. <head>    
  4.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    
  5.     <script src="./js/jquery-1.6.2.js"></script>      
  6.     <script src="./js/jquery.json.js"></script>  
  7.       
  8.     <title>JSON数据的取得</title>  
  9.     <script>       
  10.      
  11.     $(function(){  
  12.         $.ajax ({  
  13.             // 下面的各个参数的设置,用法,请参照 http://api.jquery.com/jQuery.ajax/   
  14.             // 当然还有其他的很多参数了,具体用法不一一列举了。  
  15.             url : "MyJsonHandler/student.json",            // JSON数据的地址  
  16.             type: 'get',                                  // 数据传送方式                
  17.             dataType: 'json',                              // 数据类型  
  18.             data: $.toJSON({"school" :encodeURIComponent("南京大学")}),        // 如果取得json数据之前,需要传递参数的话,可以使用data,个人理解:data就相当于一个parameter。  
  19.             contentType: 'application/json',  
  20.             // 返回结果为成功  
  21.             success : function( data, textStatus,jqXHR ) {  
  22.                 $("#showarea").html(data.school);  
  23.             },  
  24.             // 返回结果为失败  
  25.             error : function(jqXHR, textStatus, errorThrown) {  
  26.                 alert('error');      
  27.             }  
  28.         });      
  29.     });    
  30.     </script>    
  31. </head>    
  32.     
  33. <body>    
  34.     <section id="showarea">   
  35.     </section>  
  36. </body>    
  37. </html>    

对于get方式,或许大家早就已经有了答案,那就是从 HttpContext的 Request.QueryString中取得。

但是,如果数据传递方式是 post 呢? 这样从Request.QueryString中  是肯定取不到数据的。怎么办?


我写了一个比较通用的方法,兼容post 和 get 。

[csharp]  view plain copy
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4. using System.Web;  
  5. using System.IO;  
  6.   
  7. namespace MyHandlers  
  8. {  
  9.     public class MyJsonHandler : IHttpHandler  
  10.     {  
  11.         public bool IsReusable  
  12.         {  
  13.             get { return true; }  
  14.         }  
  15.   
  16.         public void ProcessRequest(HttpContext context)  
  17.         {  
  18.             // Post方式下,取得client端传过来的数据  
  19.             if ("post".Equals(context.Request.HttpMethod.ToLower()))  
  20.             {  
  21.                 StreamReader reader = new StreamReader(context.Request.InputStream);  
  22.                 string json = HttpUtility.UrlDecode(reader.ReadToEnd());  
  23.                 context.Response.Write(json);  
  24.             }  
  25.             // Get方式下,取得client端传过来的数据  
  26.             else  
  27.             {  
  28.                 // 注意,这个是需要解码的  
  29.                 string json = HttpUtility.UrlDecode(context.Request.QueryString.ToString());  
  30.                 context.Response.Write(json);  
  31.             }  
  32.         }  
  33.     }  
  34. }  

1, 上面的代码并不是一个完整的一套httphandler, 还有web.config之类的东西,都省略掉了。

上面的代码只是一个示例,告诉你怎么去做。

2, 如果项目中,只需要post方式的话,就不要那么复杂了。 data里面的内容就不需要编码和解码这么麻烦了。这一点注意一下。


最后得到的结果: (post 和 get一样)

jquery+ajax 的 data参数设置的内容,如何在HttpHandler的HttpContext中取得(包括post方式和get方式)_第1张图片


你可能感兴趣的:(jquery+ajax 的 data参数设置的内容,如何在HttpHandler的HttpContext中取得(包括post方式和get方式))