在用jquery处理html5的应用的时候,一直在firefox下测试都正常,用户用pad访问的时候说有乱码,# f& R- H P9 p* A7 T: N' j
自己试验了下果然,后发现chrome和ie内核下都是有此问题,此问题设置了页面属性为utf-8时候,只有firefox是传的charset=utf-8的头文件
' J. m. e% ~7 u- F; O* Q5 |6 wchrome和ie都没有指定,所以出现乱码问题. k2 o( J) {7 R& g# q) t
解决方法:
* `0 |2 b0 f8 }2 ]. U8 b+ l n$.ajaxsetup({
' d% ^% p4 @3 L& s1 O8 D! y, u contenttype: application/x-www-form-urlencoded; charset=utf-8
; f7 l* a( e# Y2 ? r( q& X});
+ S/ M8 R. {# g& K, E# c* z0 e$.post(test.php, { name: i5a6, time: 2pm },2 h+ H" e: r/ ]3 G& A
function(data){
5 U! x0 u, U+ Z% H& m& u- T process(data);% J' g' U4 d1 V
}, json);
0 X" I. X5 @' U# ^" ?! R8 z或者使用:" r* d0 s% r0 D1 I7 n% Y7 D+ x
$.ajax({
) B3 n5 @# @& w5 A6 S0 J4 Z ,
# U/ c- t; T+ S type:post,
5 d& S3 i' C% M: e) r( t& V$ ~! C9 K data:data,
- e- X5 K2 n, n contenttype:application/x-www-form-urlencoded; charset=utf-8,+ ?* l/ c3 j6 r% r2 m+ v- O
datatype:json,
; q3 f" g2 R: C0 z success: function(){; {6 {/ i3 W# |/ u2 r
...8 f' \& K; K& a1 n4 L4 [1 _
}
2 c( d; K9 M& I})3 V6 B; Q' k& v# @; a; U2 P A3 q8 @
推荐使用第一种,不过也是根据自己的实际情况看的,有人推荐用 encodeuricomponent 做字符转换: S( `/ J [2 W& ~. B
总结一下ajax 提交数据乱码一些经验, ~) T2 r9 G. W+ `3 |4 m/ }
为了避免乱码,可以做到以下几步
2 h5 p9 ^3 d @( c4 P解决方法
3 _$ |- n3 f' D$ A7 R, w% m9 h4 w( X4 c1,保持编码的统一,包括文件编码,数据库编码,网页content-type编码6 V9 N& i% N: o$ j4 T
检查一下<meta http-equiv=”content-type” content=”text/html; charset=utf-8″ />
( }9 v* I' X! V2 S: H建议中文都是用utf-8,使用gbk/gb2312有可能会出现乱码
/ n1 ]" G/ ?' B+ ~2 [3 Q2,使用post来发送而不是get I2 `9 \& Q" v |
get方法是会通过链接来传递参数,而且会自动urlencode(编码),而各个浏览器编码的方式可能不太一样。使用post可以避免这种情况。& K& F | [7 T
3,通过在js前端escape编码再发送,然后后台解码取得数据
% g) X/ [* e( t% |" P这些可以在网上搜索' M; J6 n0 g- Z: K: \# T
4,在全局设定contenttype,指定编码% Z$ R" [! B# M
因为jquery ajax是使用utf-8来编码发送数据的,ie在发送时却没加上charset=utf-8,从而导致乱码(ie默认使用iso-8859-1编码)- {: C' }) J4 T8 {" `
$.ajaxsetup({
9 ~& {' ^& E0 L3 f+ y1 t$ B4 tcontenttype: application/x-www-form-urlencoded; charset=utf-8* Z# y, C1 t' h8 F- P! T
% j" \0 E7 ?2 v4 V. D更多网页制作信息请查看: 网页制作 |
|