鼓浪屿小吃一条街:Ajax调用aspx后台函数用dataset 写入innerHTML乱码?

来源:百度文库 编辑:高校问答 时间:2024/05/01 06:14:28
有谁知道怎么解决?

doCoreProductBind: function() {
// alert(document.getElementById(this.u_ele).value);
Pages.digidea.NewProduct(this.doCoreProductBind_callback.bind(this));

},
doCoreProductBind_callback: function(res) {

var ds = res.value;
//alert(res.value);
var c = document.getElementById("CoreProducts");
if(ds != null && typeof(ds) == "object" && ds.Tables != null && res.error == null){
var str = "<div class=coreproductdetail id=CoreProductLeft><ul>";

for(var i=0; i<ds.Tables[0].Rows.length; i++){
str += "<li><a href=productDetail.aspx?productId=";
str += ds.Tables[0].Rows[i]["productId"] +" target=_blank>";
str += ds.Tables[0].Rows[i]["productName"].toString() +"</a>";
//alert(ds.Tables[0].Rows.length\2);
if(i==(ds.Tables[0].Rows.length%2)){
str += "<li class=li01><a href=ProductMore.aspx target=_blank class=more>更多>>  </a></li>";
str += "</ul></div><div class=coreproductdetail id=CoreProductRight><ul>";
}else if(i==ds.Tables[0].Rows.length-1){
str += "<li class=li01><a href=ProductMore.aspx target=_blank class=more>更多>>  </a></li>";
str += "</ul></div></div>";
}

}

alert(str);
c.innerHTML = str.toString();
c.style.visibility = "visible";

}
}

用AJAX来GET回一个页面时,RESPONSETEXT里面的中文多半会出现乱码,这是因为xmlhttp在处理返回的responseText的时候,是把resposeBody按UTF-8编码进解码考形成的,如果服务器送出的确实是UTF-8的数据流的时候汉字会正确显示,而送出了GBK编码流的时候就乱了。解决的办法就是在送出的流里面加一个HEADER,指明送出的是什么编码流,这样XMLHTTP就不会乱搞了。
PHP:header('Content-Type:text/html;charset=GB2312');
ASP:Response.Charset("GB2312")
JSP:response.setHeader("Charset","GB2312");