加载的内容在Ajax .load()之后丢失了字符集(UTF-8),但仅限于FireFox和IE。 Chrome和Opera工作正常

时间:2015-03-30 08:38:12

标签: jquery ajax google-chrome firefox character-encoding

我已经在网上搜索了几天,我似乎找不到合适的解决方案。问题是我正在尝试从我的域上的另一个页面加载一些数据。此页面有charset ISO-8859-1。哪个UTF-8应该兼容。 我首先在Chrome中进行了测试,它运行良好,但是当我在FireFox中进行测试时,它无法与charset一起使用。 我正在将一些类别名称加载到列表中以在子菜单中使用。如图所示,只有子菜单才有问题。 http://imgur.com/OrtZ9DD

我用来加载内容的ajax代码在这里:

var catz = subCats[i].url + " .productSubCategorys a";
var fordiv = '#ghostDiv' + i;
//This next line is the function
    $(fordiv).load(catz, {contentType: "application/x-www-form-urlencoded;charset=UTF-8"}, function(){
        var fordiva = fordiv + " a";
        $(fordiva).removeClass("SubCats_Prodlink");
        var arraydims = $(fordiva);
        var d = '.0c' + i;
        if(arraydims.length != 0){
            var di = '#dcu' + i;
            $(d).append('<ul class="dc' + i + ' sub-level" id="dcu' + i + '"></ul>');
            $(di).append('<div id="sscont' + i + '"></div>');
            for(var index = 0; index < arraydims.length;index++){
                var dc = '#sscont' + i; //'.dc' + i;
                $(dc).append('<li><a href="' + arraydims[index] + '">' + decodeURIComponent(encodeURIComponent(arraydims[index].text)) + '</a></li>');
            }
        }       
    });

我试图使用charset传递标头的参数,但它不起作用。为什么ajax函数会删除charset以及如何修复它? 希望我提供了足够的信息。

1 个答案:

答案 0 :(得分:3)

在提出问题后几个小时我找到了答案。这就是它一直有效的方式。当你放弃时,你可能非常接近答案。

无论如何..答案在这里找到: Convert ISO-8859-1 to UTF-8

这是有效的:

//This setup makes sure that the header is correct
    $.ajaxSetup({
        contentType: 'Content-type: text/plain; charset=iso-8859-1',
        // This is the imporant part!!!
        beforeSend: function(jqXHR) {
            jqXHR.overrideMimeType('text/html;charset=iso-8859-1');
        }
    });

放在.load函数之前。