加载的内容在 Ajax .load() 之后丢失字符集 (UTF-8),但仅在 FireFox 和 IE 中。 Chrome Opera 运行良好
Loaded content loses charset(UTF-8) after Ajax .load(), but only in FireFox and IE. Chrome and Opera works fine
我已经在网上搜索了好几天,但似乎找不到可行的解决方案。问题是我正在尝试从我域中的另一个页面加载一些数据。此页面包含字符集 ISO-8859-1。哪个UTF-8应该兼容。
我首先在 Chrome 中进行了测试,它运行良好,但是当我在 FireFox 中进行测试时,它不适用于字符集。
我正在将一些类别名称加载到列表中以在子菜单中使用。如图所示,只有子菜单有问题。
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>');
}
}
});
我试图通过字符集为 header 传递一个参数,但它不起作用。为什么 ajax 函数会删除字符集,我该如何修复它?
希望我提供了足够的信息。
我在提出问题后几个小时就找到了答案。这就是它一直运作的方式。当你放弃的时候,你可能离答案很近了。
无论如何..答案是在这里找到的:
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 函数之前。
我已经在网上搜索了好几天,但似乎找不到可行的解决方案。问题是我正在尝试从我域中的另一个页面加载一些数据。此页面包含字符集 ISO-8859-1。哪个UTF-8应该兼容。 我首先在 Chrome 中进行了测试,它运行良好,但是当我在 FireFox 中进行测试时,它不适用于字符集。 我正在将一些类别名称加载到列表中以在子菜单中使用。如图所示,只有子菜单有问题。 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>');
}
}
});
我试图通过字符集为 header 传递一个参数,但它不起作用。为什么 ajax 函数会删除字符集,我该如何修复它? 希望我提供了足够的信息。
我在提出问题后几个小时就找到了答案。这就是它一直运作的方式。当你放弃的时候,你可能离答案很近了。
无论如何..答案是在这里找到的: 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 函数之前。