在用jquery处理html5的应用的时候,一直在firefox下测试都正常,用户用pad访问的时候说有乱码,
( y S% L8 w. b9 H7 e1 @ \自己试验了下果然,后发现chrome和ie内核下都是有此问题,此问题设置了页面属性为utf-8时候,只有firefox是传的charset=utf-8的头文件; n8 p* _. X- n: k6 }
chrome和ie都没有指定,所以出现乱码问题.' _! N! u0 I) u
解决方法:* Z$ X6 _8 |; I5 T
$.ajaxsetup({
3 Y5 P# r* N e! r2 x0 ~' u, _0 a( r contenttype: application/x-www-form-urlencoded; charset=utf-8
' s5 s& ~2 U. P/ |! ]& U});! D/ P' r6 T; a1 {1 y
$.post(test.php, { name: i5a6, time: 2pm },! L- h/ c/ @+ O
function(data){
: P2 F& M/ h' v, q4 x process(data);2 ]% M7 B8 t# @% K
}, json);' J) t& c8 l( r
或者使用:
" r5 k1 s |% o& ^$.ajax({
) i- p$ ?5 D: I- y6 A7 X/ E ,
$ T$ z0 b1 U2 g8 { type:post,
; X% |0 Z9 A& m& R7 M+ y data:data,
& a& ^+ @2 i) i$ v5 r$ D/ G. ]8 ` contenttype:application/x-www-form-urlencoded; charset=utf-8,
' ?2 x P, @2 y; | datatype:json,
5 ?/ B; x& V1 y [% c success: function(){
4 F4 Y+ l" E5 M5 S. L ...
: U& p5 i8 o5 C* j& C }% H2 G _. V1 x6 K
})* m+ ?0 w k) s" `% J5 R
推荐使用第一种,不过也是根据自己的实际情况看的,有人推荐用 encodeuricomponent 做字符转换
6 X8 e0 G0 Z5 m7 F* X0 v6 P# ?总结一下ajax 提交数据乱码一些经验
5 R& z$ d9 Q) ^! P0 o为了避免乱码,可以做到以下几步
2 M: y) m2 |1 V1 ^, s$ |* X$ r解决方法2 {0 b2 ~; i! t9 r
1,保持编码的统一,包括文件编码,数据库编码,网页content-type编码$ @, t9 E, i7 M. k
检查一下<meta http-equiv=”content-type” content=”text/html; charset=utf-8″ />) Z3 N) U ?( k: e
建议中文都是用utf-8,使用gbk/gb2312有可能会出现乱码
2 I2 [& ~5 b h' f+ A2,使用post来发送而不是get/ q; x9 Z6 C5 E
get方法是会通过链接来传递参数,而且会自动urlencode(编码),而各个浏览器编码的方式可能不太一样。使用post可以避免这种情况。7 V, N* J4 O4 D$ S7 q) T: K/ \
3,通过在js前端escape编码再发送,然后后台解码取得数据
/ G% {7 u: A! ?9 u" R8 @这些可以在网上搜索3 z3 i9 m8 c5 v( S
4,在全局设定contenttype,指定编码
: L6 y% q+ g7 [0 b x* ?4 J$ K因为jquery ajax是使用utf-8来编码发送数据的,ie在发送时却没加上charset=utf-8,从而导致乱码(ie默认使用iso-8859-1编码)1 C5 P1 r- i3 o0 c0 d# C
$.ajaxsetup({
! K+ U4 S" ^ v" a! n Z( C0 h, jcontenttype: application/x-www-form-urlencoded; charset=utf-8
9 }) x' ^6 l9 v [
4 H& e( r1 v" s0 H更多网页制作信息请查看: 网页制作 |
|