首页 > Web开发 > 详细

JQuery向ashx提交中文参数方案 [转]

时间:2015-03-24 10:26:56      阅读:172      评论:0      收藏:0      [点我收藏+]

转自: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!

JQuery向ashx提交中文参数方案 [转]

原文:http://www.cnblogs.com/wenjie/p/4361861.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!