关于ajax异步获取服务器信息乱码情况
1、当客户端页面编码必须为gb2312时,ajax获取的信息显示为乱码
有时候有些项目需要include新闻发布系统某站点数据时,新闻发布系统该站点配置为gb2312编码的站点,此时,页面设置的编码必须为gb2312。但ajax异步获取的utf-8信息需要写入页面,与页面编码不一致,显示为乱码。(比如xy2某项目,同时需要include新闻数据,与接口返回的直播信息)
解决方法:添加ajax参数:scriptCharset:'utf-8'
,使返回值以scriptCharset指定编码显示而不是默认以页面编码显示
js 代码:
1 2 3 4 5 6 7 8 | $.ajax({ url : 'testUr' l, data : {}, dataType : 'jsonp' , scriptCharset : 'utf-8' , success : function (){ } }); |
2、当异步请求的服务器页面的编码为 gb2312 时,ajax获取的信息为乱码
当异步请求的服务器页面的编码为 gb2312 时,此时不能使用ajax方法获取信息,因为ajax内部是使用unicode 按照utf8编码来处理所有字符的。所以返回的信息就乱码了
解决方法:使用隐藏的iframe加载页面,然后再获取目标数据到相应位置。
html代码
1 2 3 4 | < div class = "main" > < div class = "com-con" ></ div > </ div > < iframe src = "" id = "iframe" style = "display:none" ></ iframe > |
js代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | var PAGE =( function (){ $iframe = $( '#iframe' ), fn = { init : function (){ /*初始*/ $iframe.attr( 'src' ,url); $iframe.load( function (){ var $data; try { $data = $iframe.contents(); } catch (e){ return ; } $( '.main .com-con' ).append($data.find( '.com-con' ).html()); }); }, getMore : function (url){ /*加载更多*/ $iframe.attr( 'src' ,url); $data = $iframe.contents(); $( '.main .com-con' ).append($data.find( '.com-con' ).html()); } }, init = function () { fn.init(); /*点击获取更多*/ $( ".more-btn" ).bind( "click" , function (){ /*..此处省略..*/ fn.getMore(url); }); }; return { fn: fn, init: init } })(); nie.define( function (){ PAGE.init(); }); |
手机阅读请扫描下方二维码:
1

1

1