在用jquery处理html5的应用的时候,一直在firefox下测试都正常,用户用pad访问的时候说有乱码," B: f3 l0 x5 J2 n
自己试验了下果然,后发现chrome和ie内核下都是有此问题,此问题设置了页面属性为utf-8时候,只有firefox是传的charset=utf-8的头文件; Y3 k6 v U0 d7 {) L- O; ?* A
chrome和ie都没有指定,所以出现乱码问题.
% F8 Y. c; k( t! N5 o解决方法:
5 R! W4 O# V3 T6 K7 s6 X5 h$ X$.ajaxsetup({
: E; C- q; A6 U+ N6 B contenttype: application/x-www-form-urlencoded; charset=utf-8
- W6 D5 Z1 E7 U, Z! ~$ q});6 O% t" o( V- m7 a7 F& e/ @
$.post(test.php, { name: i5a6, time: 2pm },
2 r2 f& y' u2 R function(data){8 W# M8 x- h, k, ?) I8 Q3 d
process(data);
/ _1 ^3 l$ T+ J# u' n( |2 D' { }, json);
& R: y3 y7 g! m$ q3 c或者使用:( D+ I& n7 F, J
$.ajax({
R: h; a( S4 E1 A( y5 q ,# d% A( P2 T2 L7 m5 B$ W2 T; n( b! m
type:post,8 \! b5 m, _3 G* Z) [
data:data,
+ l; @. W$ f7 k% s6 A% h/ K contenttype:application/x-www-form-urlencoded; charset=utf-8,7 A4 F, s/ F- g+ t7 \0 _ k+ S$ i
datatype:json,0 L, n! m! m f* I+ z1 ?
success: function(){
! {. o1 G& r! h% w4 F6 z& n ...
C: j8 ?. H% w; | }
, [0 r! g( W8 b8 R- z3 l( z})
; V# j+ h6 J+ b1 H7 n- n推荐使用第一种,不过也是根据自己的实际情况看的,有人推荐用 encodeuricomponent 做字符转换5 _6 m, v; o" p* g& [3 l
总结一下ajax 提交数据乱码一些经验
1 ?1 X3 W2 F: Y8 }7 y: u9 O4 D为了避免乱码,可以做到以下几步+ J. T. g9 _/ m1 U+ v4 W
解决方法# D/ q! U/ p' n- Y. i
1,保持编码的统一,包括文件编码,数据库编码,网页content-type编码6 ~1 B& l" U; m4 h
检查一下<meta http-equiv=”content-type” content=”text/html; charset=utf-8″ />
. s; R5 }( G% P/ Y1 x! }建议中文都是用utf-8,使用gbk/gb2312有可能会出现乱码. {$ D9 N, Y5 d1 `/ p7 T" _' w
2,使用post来发送而不是get
+ F; s* c8 S# j$ p8 _5 \) n$ x9 g qget方法是会通过链接来传递参数,而且会自动urlencode(编码),而各个浏览器编码的方式可能不太一样。使用post可以避免这种情况。
1 d/ C6 v6 k1 F; O3,通过在js前端escape编码再发送,然后后台解码取得数据
1 s( u, e H5 n2 ^2 {6 l这些可以在网上搜索! p) @1 c- | \1 W m$ o; p
4,在全局设定contenttype,指定编码
7 I4 Z, Z; N- Y) i7 H' h, g因为jquery ajax是使用utf-8来编码发送数据的,ie在发送时却没加上charset=utf-8,从而导致乱码(ie默认使用iso-8859-1编码)
8 K) i& g7 B, O' o$.ajaxsetup({
8 p( W9 P: Q$ Z0 K) jcontenttype: application/x-www-form-urlencoded; charset=utf-8 p5 h; j; G. U. t( `' r
; O3 L$ r% D1 ?( o更多网页制作信息请查看: 网页制作 |
|