Ajax request response 乱码解决方法
程序员文章站
2022-06-17 14:07:44
此功能已进入试用一周了,都没有问题,奇怪的是今天出现了问题?? 复制代码 代码如下:ajaxrequestobj.createeqstatusparameter=funct...
此功能已进入试用一周了,都没有问题,奇怪的是今天出现了问题??
ajaxrequestobj.createeqstatusparameter=function() {
if (eqstatusarray.length < 1) {
return;
}
var paramnamearray = new array();
var paramvaluearray = new array();
//取状态数组
for (var index = 0, step = eqstatusarray.length; index < step; index++) {
var tempeqstatusobj = eqstatusarray[index];
paramnamearray.push(tempeqstatusobj.eqcode + "`" + tempeqstatusobj.opdatetime);
paramvaluearray.push(tempeqstatusobj.status);
}
//分解、生成请求串。
var paramstr = "";
paramstr = paramstr.concat("eqstatusnames=").concat(encodeuricomponent(paramnamearray.join(","))).concat("&");
paramstr = paramstr.concat("eqstatusvalues=").concat(encodeuricomponent(paramvaluearray.join("`")));
return paramstr;
};
xmlhttpobj.setrequestheader("content-type","application/x-www-form-urlencoded")
xmlhttpobj.send(param);
客户端将参数以utf-8方式传递给应用端,在使用此参数时直接从request中取就可以。
[ajax接收响应信息]
直接使用forward跳转实现div局部内容变更
if ("doqueryrequest".equals(actparam)) {
equiputils equiputilsobj = equiputils.getinstance();
//取查询参数、拼接
equipstatusmgrobj.setequipcondition(equiputilsobj.createequipfilter(request));
equipstatusmgrobj.setequipstatuscondition(equiputilsobj.getequipstatusdate(request));
//设备信息
list<dynabean> equiparray = equipstatusmgrobj.queryequip(null);
//设备状态
map<string, map<string, string>> equipstatusmapping =
equipstatusmgrobj.queryequipstate4map(equiparray, null);
sessionobj.setattribute("paginationentity", equipstatusmgrobj.getpaginationentity());
sessionobj.setattribute("equipcondition", equipstatusmgrobj.getequipcondition());
sessionobj.setattribute("eqstatuscondition", equipstatusmgrobj.getequipstatuscondition());
request.setattribute("equiplist", equiparray);
request.setattribute("datelist", equipstatusmapping);
try {
request.getrequestdispatcher("/eq/detectpoint/innereqstatusrefresh.jsp").forward(request, response);
} catch (exception e) {
e.printstacktrace();
}
} else if ("getpagetoolbar".equals(actparam)) {
paginationentity pentity = (paginationentity) sessionobj.getattribute("paginationentity");
string tempstr = pentity.getpaginationtool();
outputstream out;
try {
response.setcontenttype("text/html;charset=utf-8");
out = response.getoutputstream();
out.write(tempstr.getbytes("utf-8"));
out.flush();
out.close();
} catch (ioexception e) {
e.printstacktrace();
}
}
因为,目前使用xmlhttpobj.responsetext,responsetext默认就是utf-8所以将跳转的页面弄成utf-8是不错的选择。至少不用担心乱码。。
[乱码原因]
之前此功能使用的是gb18030编码,到修改为止在其它客户机以及同事的机器上都非常正常,但就是我自己的机器翻页出现乱码。当我将此功能所用到的呈现文件统一使用utf-8就ok了,也不知那xmlhttpobj触动了机器的那个神经。。查了些资料也都是说搞国际化的趋势,问题是解决了但原因没有找到!
[发现一bug]
response.setcontenttype("text/html;charset=utf8");在我机器上不抛错,但在同事的机器上就会抛错
改成response.setcontenttype("text/html;charset=utf-8");一切ok..
复制代码 代码如下:
ajaxrequestobj.createeqstatusparameter=function() {
if (eqstatusarray.length < 1) {
return;
}
var paramnamearray = new array();
var paramvaluearray = new array();
//取状态数组
for (var index = 0, step = eqstatusarray.length; index < step; index++) {
var tempeqstatusobj = eqstatusarray[index];
paramnamearray.push(tempeqstatusobj.eqcode + "`" + tempeqstatusobj.opdatetime);
paramvaluearray.push(tempeqstatusobj.status);
}
//分解、生成请求串。
var paramstr = "";
paramstr = paramstr.concat("eqstatusnames=").concat(encodeuricomponent(paramnamearray.join(","))).concat("&");
paramstr = paramstr.concat("eqstatusvalues=").concat(encodeuricomponent(paramvaluearray.join("`")));
return paramstr;
};
xmlhttpobj.setrequestheader("content-type","application/x-www-form-urlencoded")
xmlhttpobj.send(param);
客户端将参数以utf-8方式传递给应用端,在使用此参数时直接从request中取就可以。
[ajax接收响应信息]
直接使用forward跳转实现div局部内容变更
复制代码 代码如下:
if ("doqueryrequest".equals(actparam)) {
equiputils equiputilsobj = equiputils.getinstance();
//取查询参数、拼接
equipstatusmgrobj.setequipcondition(equiputilsobj.createequipfilter(request));
equipstatusmgrobj.setequipstatuscondition(equiputilsobj.getequipstatusdate(request));
//设备信息
list<dynabean> equiparray = equipstatusmgrobj.queryequip(null);
//设备状态
map<string, map<string, string>> equipstatusmapping =
equipstatusmgrobj.queryequipstate4map(equiparray, null);
sessionobj.setattribute("paginationentity", equipstatusmgrobj.getpaginationentity());
sessionobj.setattribute("equipcondition", equipstatusmgrobj.getequipcondition());
sessionobj.setattribute("eqstatuscondition", equipstatusmgrobj.getequipstatuscondition());
request.setattribute("equiplist", equiparray);
request.setattribute("datelist", equipstatusmapping);
try {
request.getrequestdispatcher("/eq/detectpoint/innereqstatusrefresh.jsp").forward(request, response);
} catch (exception e) {
e.printstacktrace();
}
} else if ("getpagetoolbar".equals(actparam)) {
paginationentity pentity = (paginationentity) sessionobj.getattribute("paginationentity");
string tempstr = pentity.getpaginationtool();
outputstream out;
try {
response.setcontenttype("text/html;charset=utf-8");
out = response.getoutputstream();
out.write(tempstr.getbytes("utf-8"));
out.flush();
out.close();
} catch (ioexception e) {
e.printstacktrace();
}
}
因为,目前使用xmlhttpobj.responsetext,responsetext默认就是utf-8所以将跳转的页面弄成utf-8是不错的选择。至少不用担心乱码。。
[乱码原因]
之前此功能使用的是gb18030编码,到修改为止在其它客户机以及同事的机器上都非常正常,但就是我自己的机器翻页出现乱码。当我将此功能所用到的呈现文件统一使用utf-8就ok了,也不知那xmlhttpobj触动了机器的那个神经。。查了些资料也都是说搞国际化的趋势,问题是解决了但原因没有找到!
[发现一bug]
response.setcontenttype("text/html;charset=utf8");在我机器上不抛错,但在同事的机器上就会抛错
改成response.setcontenttype("text/html;charset=utf-8");一切ok..
推荐阅读
-
JQuery中Ajax的Post提交在IE下中文乱码的解决方法
-
ajax提交到servelt获取参数有乱码的解决方法
-
STRUTS+AJAX+JSP 请求到后台乱码问题解决方法
-
php+AJAX传送中文会导致乱码的问题的解决方法
-
jquery.ajax的url中传递中文乱码问题的解决方法
-
jquery ajax传递中文参数乱码问题及解决方法说明
-
PHP Ajax中文乱码问题解决方法
-
Ajax Throws Sys.WebForms.PageRequestManagerErrorException with Response.Redirect的解决方法
-
jsp中 ajax的get请求的中文乱码问题的解决方法
-
IE下Ajax提交乱码的快速解决方法