关于ajax异步获取服务器信息乱码情况

1、当客户端页面编码必须为gb2312时,ajax获取的信息显示为乱码

有时候有些项目需要include新闻发布系统某站点数据时,新闻发布系统该站点配置为gb2312编码的站点,此时,页面设置的编码必须为gb2312。但ajax异步获取的utf-8信息需要写入页面,与页面编码不一致,显示为乱码。(比如xy2某项目,同时需要include新闻数据,与接口返回的直播信息)/p>

解决方法:添加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();
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值