我想用ajax+struts1.2实现一个选择公司名称后级联显示与公司相对应部门名称,出现的问题是返回值乱码(????)
请各位大虾傍明解决哈。。
代码如果下:
JSP代码:
所属公司:td> | 请选择.. 公司1 公司2 公司3 |
所属部门: | 请选择.. |
JS代码:
//创建xmlHttp
var xmlHttp;
//发送请求函数
function createXMLHttpRequest(url){
if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}else if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
if(xmlHttp){
xmlHttp.open("get", url, true);
xmlHttp.onreadystatechange = processResponse;
xmlHttp.send(null);
}
}
//处理返回函数
function processResponse()
{
if(xmlHttp.readyState==4)
{
if(xmlHttp.status==200)
{
updateList();
}else
{
alert("您所请求的页面有异常!!");
}
}
}
//更新列表函数
function refreshList()
{
var companyName=document.getElementById("companyName").value;
if(companyName=="请选择..")
{
clearList();
return;
}
var url="selectDepartment.do?companyName="+companyName;
alert(url);
createXMLHttpRequest(url);
}
//清楚列表框中的所有函数
function clearList()
{
var departmentName=document.getElementById("departmentName");
while(departmentName.childNodes.length>0)
{departmentName.removeChild(departmentName.childNodes[0]);}
}
//更新列表函数
function updateList()
{
clearList();
var departmentName=document.getElementById("departmentName");
var results=xmlHttp.responseXML.getElementsByTagName("name");
var option=null;
for(var i=0;i <results.length;i++)
{
option=document.createElement("option");
//option.appendChild(document.createTextNode("1111"));
alert(results[i].firstChild.nodeValue);
var message=document.createTextNode(results[i].firstChild.nodeValue);
option.appendChild(message);
departmentName.appendChild(option);
}
}
action代码:
public class SelectDepartment extends Action {
private CompanyManage companyManage;
public void setCompanyManage(CompanyManage companyManage) {
this.companyManage = companyManage;
}
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
PrintWriter out=response.getWriter();
response.setContentType("text/xml;charset=UTF-8");
response.setHeader("Cache-Control", "no-cache");
String companyName=request.getParameter("companyName");
System.out.println(companyName);
//根据公司名称返回此公司所包含的部门名称集合
List strlist = companyManage.getDepartmentNamelistByCompanyName(name);
out.write(" ");
for(int i=0;i
{
out.write(" "+strlist.get(i)+name>");
}
out.write(" ");
out.close();
System.out.println(out.toString());
return null;
}
}
问题描述:在JS里用alert();方式可以取出正确的中文值,在action里System.out.println(companyName);
也能打印出传入的中文值,用Debug方式可以查看到strlist 的返回值为companyName数据库里对应的部门名称值
最后在页面显示出的部门名称为乱码.