关于ajax异步获取服务器信息乱码情况
1、当客户端页面编码必须为gb2312时,ajax获取的信息显示为乱码
有时候有些项目需要include新闻发布系统某站点数据时,新闻发布系统该站点配置为gb2312编码的站点,此时,页面设置的编码必须为gb2312。但ajax异步获取的utf-8信息需要写入页面,与页面编码不一致,显示为乱码。(比如xy2某项目,同时需要include新闻数据,与接口返回的直播信息)
解决方法:添加ajax参数:scriptCharset:'utf-8'
,使返回值以scriptCharset指定编码显示而不是默认以页面编码显示
js 代码:
$.ajax({
url : 'testUr'l,
data : {},
dataType : 'jsonp',
scriptCharset : 'utf-8' ,
success : function(){
}
});
2、当异步请求的服务器页面的编码为 gb2312 时,ajax获取的信息为乱码
当异步请求的服务器页面的编码为 gb2312 时,此时不能使用ajax方法获取信息,因为ajax内部是使用unicode 按照utf8编码来处理所有字符的。所以返回的信息就乱码了
解决方法:使用隐藏的iframe加载页面,然后再获取目标数据到相应位置。
html代码
<div class="main">
<div class="com-con"></div>
</div>
<iframe src="" id="iframe" style="display:none"></iframe>
js代码
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