在用jquery处理html5的应用的时候,一直在firefox下测试都正常,用户用pad访问的时候说有乱码,* x3 C. H2 k$ n2 I7 r) e) B! O
自己试验了下果然,后发现chrome和ie内核下都是有此问题,此问题设置了页面属性为utf-8时候,只有firefox是传的charset=utf-8的头文件8 A, U F& Y- x3 W
chrome和ie都没有指定,所以出现乱码问题.
! S/ ~ u# A2 E; A8 v, R: T" V8 k+ x解决方法:# |5 F Y- {5 Z- `, Y# F0 M' T
$.ajaxsetup({
* M/ U; F; }( T8 q/ w# U4 f. g& X contenttype: application/x-www-form-urlencoded; charset=utf-8
: E F" y+ K4 x6 M* x! t9 g});
6 @# C" E3 Q8 Z- W$.post(test.php, { name: i5a6, time: 2pm },( f+ M1 [- s0 h- R
function(data){
% g7 v: V4 d \% q process(data);1 Q( [8 j* O! l1 v
}, json);) F5 c6 H- L( P! \
或者使用:+ O7 U( |5 W( q( z1 T+ r3 w' a
$.ajax({# o: ^" h% j0 y9 B) C4 p3 w1 j/ \0 R
,
7 D8 P6 j& W& v6 X- r, ?. y3 N0 L type:post,% k7 L% B2 _# a. a
data:data,
$ B; v3 P( w1 ] contenttype:application/x-www-form-urlencoded; charset=utf-8,0 r! D! j# i2 x; E6 ]* f' M2 C7 F
datatype:json,
" U+ b5 m3 e. } success: function(){
, H: T4 V5 \ N/ a1 g" J ...5 f) t: ]6 y. N1 b6 X
}3 G% _1 t- t9 w7 {& v
})
7 d% m7 Z( B' I0 U7 M7 Y推荐使用第一种,不过也是根据自己的实际情况看的,有人推荐用 encodeuricomponent 做字符转换
, B( j. [5 p3 Y8 y1 e# e/ j' e' w总结一下ajax 提交数据乱码一些经验
5 J9 d6 d. _* J+ `( O T) f为了避免乱码,可以做到以下几步! e* D! f0 A! b
解决方法8 S3 L; r8 L' \4 u- i0 W
1,保持编码的统一,包括文件编码,数据库编码,网页content-type编码
# c. V1 C3 H1 v# K/ \ l3 `检查一下<meta http-equiv=”content-type” content=”text/html; charset=utf-8″ />
7 h! s S3 o$ d2 F0 b1 B4 s2 J- U' P建议中文都是用utf-8,使用gbk/gb2312有可能会出现乱码
# E% }9 M# x8 Q5 a2,使用post来发送而不是get3 l7 q7 g. `7 c! C, }; x' `; M
get方法是会通过链接来传递参数,而且会自动urlencode(编码),而各个浏览器编码的方式可能不太一样。使用post可以避免这种情况。! e0 t0 h, k7 e
3,通过在js前端escape编码再发送,然后后台解码取得数据
. ^2 I. ~) ]- `* a5 ]% A- d这些可以在网上搜索
& M1 c( O# F" g* U/ a4 L- I4,在全局设定contenttype,指定编码+ x3 j2 Q# x" H4 Z1 i+ F) r
因为jquery ajax是使用utf-8来编码发送数据的,ie在发送时却没加上charset=utf-8,从而导致乱码(ie默认使用iso-8859-1编码)
1 o% m) y0 `/ s" b% ^/ a2 U$.ajaxsetup({
: r" [+ P4 ~8 ]8 R) ?contenttype: application/x-www-form-urlencoded; charset=utf-85 b, i1 J! M7 r. p
7 b7 {" X+ ~5 h7 y2 L更多网页制作信息请查看: 网页制作 |
|