做有态度的前端团队

网易FEG前端团队

关于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();
    });

手机阅读请扫描下方二维码:

添加新评论

ali-40.gifali-41.gifali-42.gifali-43.gifali-44.gifali-45.gifali-46.gifali-47.gifali-48.gifali-49.gifali-50.gifali-51.gifali-52.gifali-53.gifali-54.gifali-55.gifali-56.gifali-57.gifali-58.gifali-59.gifali-60.gifali-61.gif