zoukankan      html  css  js  c++  java
  • JQuery向ashx提交中文参数方案 [转]

    转自:http://blog.csdn.net/wangqiuyun/article/details/8450964

    字符编码这个东西,一旦和中文打上交道就不可避免出现乱码,今天项目用到了JQuery向ashx提交中文参数的这一块,折腾了一天,开始是各种乱码,最后中算弄好了。

    客户端:

    1. //异步获取数据  
    2. var tpAction=action+'getSearch.ashx?key='+encodeURIComponent('中国');                           
    3. $.getJSON(tpAction,function(rsp){//请求成功                               
    4.     if(rsp.status=='1'){  
    5.         var list=rsp.item;  
    6.         var len=list.length;                          
    7.             if(len==0){  
    8.             //没有数据直接返回                                    
    9.                 setNull();  
    10.             return;  
    11.             }                         
    12.             //组装数据                        
    13.             var s=zy_tmpl(templ,list,len);                                
    14.             $list.append(s);  
    15.             }else{  
    16.                 alert('','加载数据失败,请重试','确定');                      
    17.             }  
    18.                               
    19.         },'json',function(err){//请求失败  
    20.             alert('','加载失败,请检查网络设置!','确定');                           
    21.      },'POST','');  
    //异步获取数据
    var tpAction=action+'getSearch.ashx?key='+encodeURIComponent('中国');        					
    $.getJSON(tpAction,function(rsp){//请求成功        						
    	if(rsp.status=='1'){
    		var list=rsp.item;
    		var len=list.length;						
            	if(len==0){
    			//没有数据直接返回             						
            		setNull();
    			return;
            	}						
            	//组装数据			        	
            	var s=zy_tmpl(templ,list,len);        						
            	$list.append(s);
            	}else{
            		alert('','加载数据失败,请重试','确定');					
            	}
            					
            },'json',function(err){//请求失败
            	alert('','加载失败,请检查网络设置!','确定');        					
         },'POST','');

    服务器端:

    1. string keyy = context.Request["key"];  
    2.   
    3. if (keyy != null)  
    4. {  
    5.   
    6.     string key = HttpUtility.UrlDecode(context.Request["key"].ToString());  
    7.     //string key = context.Server.HtmlDecode(context.Request.Params["key"].ToString());  
    8.     string log = "getSearch.ashx?key=" + key;  
    9.     string logsql = "insert into logs(createtime,contents) values('" + DateTime.Now.ToString() + "','" + log + "')";  
    10.     Sqlbase.ExecuteNonQuery(CommandType.Text, logsql, null);  
    11.       
    12.     //more  
    13.     string sql = "select * from news where title like '%" + key + "%' order by id desc";  
    14.     DataTable dt = Sqlbase.ExecuteTable(CommandType.Text, sql, null);  
    15.     result rs = new result();  
    16.     rs.status = 1;  
    17.     rs.msg = "成功";  
    18.     rs.item = dt;  
    19.     string strJson = Newtonsoft.Json.JsonConvert.SerializeObject(rs);  
    20.   
    21.     context.Response.Clear();  
    22.     context.Response.ContentEncoding = Encoding.UTF8;  
    23.     context.Response.ContentType = "application/json";  
    24.     context.Response.Write(strJson);  
    25.     context.Response.Flush();  
    26.     context.Response.End();  
    27. }  
            string keyy = context.Request["key"];
    
            if (keyy != null)
            {
    
                string key = HttpUtility.UrlDecode(context.Request["key"].ToString());
                //string key = context.Server.HtmlDecode(context.Request.Params["key"].ToString());
                string log = "getSearch.ashx?key=" + key;
                string logsql = "insert into logs(createtime,contents) values('" + DateTime.Now.ToString() + "','" + log + "')";
                Sqlbase.ExecuteNonQuery(CommandType.Text, logsql, null);
                
                //more
                string sql = "select * from news where title like '%" + key + "%' order by id desc";
                DataTable dt = Sqlbase.ExecuteTable(CommandType.Text, sql, null);
                result rs = new result();
                rs.status = 1;
                rs.msg = "成功";
                rs.item = dt;
                string strJson = Newtonsoft.Json.JsonConvert.SerializeObject(rs);
    
                context.Response.Clear();
                context.Response.ContentEncoding = Encoding.UTF8;
                context.Response.ContentType = "application/json";
                context.Response.Write(strJson);
                context.Response.Flush();
                context.Response.End();
            }
    

    这里根本就没有进行什么编码设置,其实就是JS用encodeURIComponent()对中文字符串编码,C#用HttpUtility.UrlDecode(context.Request["key"].ToString())进行解码,是不是很简单呢!可是我一天的实践证明:JS端用encodeURIComponent()要比escape()好多了,至于区别大家可以google一下,C#的解码函数也一堆,像什么Server.UrlDecode之类的,但是推荐使用HttpUtility.UrlDecode(),好处大家同样也可以google!

  • 相关阅读:
    HTTP请求方法 GET POST【总结】
    Data Binding MVVM 数据绑定 总结
    Butter Knife 黄油刀
    原生JS强大DOM选择器querySelector与querySelectorAll
    JS日期Date详解与实例扩展
    JS中的冒泡排序以及实现一个数组中得最到最大的数字小例
    jquery.roundabout.js实现3D图片层叠旋转木马切换
    AngularJS 表格
    AngularJS XMLHttpRequest
    AngularJS Filters
  • 原文地址:https://www.cnblogs.com/wenjie/p/4361861.html
Copyright © 2011-2022 走看看