May 28

Sajax的Bug修正 不指定

bkkkd , 21:02 , 开发应用 , 评论(0) , 引用(0) , 阅读(3570) , Via 本站原创 | |
之从去年把sajax改了一次后,就放在那里基本上只是用来传送一些简单的操作,
前几天开始在帮我姐改她们网站的程序,想用多一些sajax这样别人上的时候更容易操作
之前因为从服务到浏览器传中文的问题,已经让我把所有程序转成utf-8的方式,

今天我尝试着用sajax传送中文到服务器,却发现成了乱码。
这个问题,我刚才开始还没有找到解决方法,因为不知道是什么原因,
检查了部分返回的数据发现原来是

if (uri.indexOf("?") == -1)
    uri += "?rs=" + escape(func_name);
else
    uri += "&rs=" + escape(func_name);
uri += "&rst=" + escape(sajax_target_id);
uri += "&rsrnd=" + new Date().getTime();

所有要传到服务器的数据都会经过escape()这个过滤,escape已经基本给放弃使用了,因为编码的标准已经放弃了
一般会用所encodeURI与encodeURIComponent代替,这个两函数在传送中文到了php里已经可以直接使用,不需要用函数转格式。
以下是escape,encodeURI与encodeURIComponent三个函数的不编码的字符。
引用

escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z
encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z

我后选择了使用encodeURIComponent来代替escape。因为传送的时候会出现#$&@之类的字符
Tags:
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]