iteye_8996 2009-04-19 13:34
浏览 301
已采纳

ajax 返回值乱码

我想用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数据库里对应的部门名称值
最后在页面显示出的部门名称为乱码.

  • 写回答

2条回答 默认 最新

  • zhangjun1101 2009-04-19 13:50
    关注

    PrintWriter out=response.getWriter();
    response.setContentType("text/xml;charset=UTF-8");

    这两句话的顺序放反了,
    应该是先设置好响应的字符编码,再得到 PrintWriter out 。。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮