实际工作中很可能遇到AJAX返回乱码问题下面是我的解决方法,曾经在sun的Solaris解决过AJAX乱码问题
在项目中使用AJAX的时候.
response.setHeader("Charset","UTF-8"); ---请把这一句也添上.保险
response.setContentType("text/xml;charset=UTF-8");
response.setHeader("Cache-Control", "no-cache");
PrintWriter out = null;
out = response.getWriter();
out.print(xml); //将XML返回页面.进行处理
out.close();
如果用SSH用AJAX检查的时候,在ACTION中返回null
即可,返回值要用一个prientwriter类的对象
import java.io.prientwriter类
prientwriter out=response.getWrite();
然后返回out.print(里面可以是int,boolean,long型等等);
----------------------------------------------------
JS 创建AJAX 以及调用和发送示例
var xmlHttp = null; //判断浏览器.并创建XMLHTTPREQUEST 对象
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} else {
if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}
}
function getType() {
var sid = document.getElementById("sid");
var cid = document.getElementById("cid");
if (cid.value == "" || cid.value.length < 0) {
deleteAllOptions(sid);
addOption(sid, "--choose type--", "0");
sid.setAttribute("disabled","disabled");
return false;
} else {
var url = "getType.htm?cid=" + cid.value; //请求的连接字符串
createXMLHttpRequest();//调用创建请求对象函数
xmlHttp.open("POST", url, true);//进行异步请求 true 表示进行异步处理
xmlHttp.onreadystatechange = function () { //设置回调函数
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
var sids = xmlHttp.responseXML.getElementsByTagName("sid");
var types = xmlHttp.responseXML.getElementsByTagName("type");
if(sids.length > 0){
deleteAllOptions(sid);
addOption(sid, "--choose type--", "0");
for (var i = 0; i < sids.length; i++) {
addOption(sid, types[i].firstChild.nodeValue, sids[i].firstChild.nodeValue);
}
}
}
}
}
xmlHttp.send(null); //发送
}
}