情况是这样子,我需要通过传一个中文到后台,然后对中文在后台做查询然后把结果返回到页面,还是中文。目前是中文从前台传到后的时候获取到的值为乱码。项目之前全部使用的是gb2312的编码,也没有做编码过滤器,查询了下AJAX的编码传送都是UTF-8,我把后台JSP页面也搞成了UTF-8还是不行,在这种情形下我应该如何修改能最快又不改动太大的方式取得结果。请大家帮忙,谢谢
下面是代码://改变显示上次电费信息
/*ajax */
var xmlHttp;
function createXMLHttpRequest() {
//表示当前浏览器不是ie,如ns,firefox
if(window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
} else if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
function change_pre_df(obj){
var site_name = obj.value;
if (site_name != "") {
//建立Ajax核心对象
createXMLHttpRequest();
var url = "xml_pre_elec.jsp?county_id="+theForm.county_id.value+"&site_name="+site_name;
//和引擎建立连接
xmlHttp.open("POST", url, true);
//回调方法地址
xmlHttp.onreadystatechange=callback;
//将参数发到引擎
xmlHttp.send(null);
}else {
document.getElementById("pre_df_message").innerHTML = "";
}
}
function callback() {
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
var resTextSpan = document.getElementById("pre_df_message");
if (xmlHttp.responseText != "") {
resTextSpan.innerHTML = "<font color='red'>" + xmlHttp.responseText + "</font>";
}else {
resTextSpan.innerHTML = "";
}
}else {
alert("请求失败,错误码=" + xmlHttp.status);
}
}}对应的后台JSP页面代码如下:<%@page contentType="text/html;charset=utf-8"%>
<%@include file="../inc/header.jsp"%>
<%
//可以采用清除缓存的方法,如下
response.setContentType("text/xml");
response.setHeader("Cache-Control", "no-store"); //HTTP1.1
response.setHeader("Pragma", "no-cache"); //HTTP1.0
response.setDateHeader("Expires", 0);
request.setCharacterEncoding("gb2312");
String site_name = request.getParameter("site_name");
String county_id = request.getParameter("county_id");
System.out.println(site_name); strsql = "select * from electricity where e_id=(select max(e_id) from electricity where flag=1 and print_flag=2 and ems_id=(select ems_id from ems where county_id="
+ county_id + " and site_name='" + site_name + "'))";
System.out.println(strsql);
String pre_df_message = "";
conn.executeQuery(strsql, rs);
if (rs.next()) {
pre_df_message = "上次抄见:" + rs.getString("current_copy")
+ " 电费金额:" + rs.getString("e_amount");
out.println(pre_df_message);
} else {
pre_df_message = "尚未录入任何电费信息或基站名有错,若第一次录入请注意填写月份差!";
out.println(pre_df_message);
}
%>
下面是代码://改变显示上次电费信息
/*ajax */
var xmlHttp;
function createXMLHttpRequest() {
//表示当前浏览器不是ie,如ns,firefox
if(window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
} else if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
function change_pre_df(obj){
var site_name = obj.value;
if (site_name != "") {
//建立Ajax核心对象
createXMLHttpRequest();
var url = "xml_pre_elec.jsp?county_id="+theForm.county_id.value+"&site_name="+site_name;
//和引擎建立连接
xmlHttp.open("POST", url, true);
//回调方法地址
xmlHttp.onreadystatechange=callback;
//将参数发到引擎
xmlHttp.send(null);
}else {
document.getElementById("pre_df_message").innerHTML = "";
}
}
function callback() {
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
var resTextSpan = document.getElementById("pre_df_message");
if (xmlHttp.responseText != "") {
resTextSpan.innerHTML = "<font color='red'>" + xmlHttp.responseText + "</font>";
}else {
resTextSpan.innerHTML = "";
}
}else {
alert("请求失败,错误码=" + xmlHttp.status);
}
}}对应的后台JSP页面代码如下:<%@page contentType="text/html;charset=utf-8"%>
<%@include file="../inc/header.jsp"%>
<%
//可以采用清除缓存的方法,如下
response.setContentType("text/xml");
response.setHeader("Cache-Control", "no-store"); //HTTP1.1
response.setHeader("Pragma", "no-cache"); //HTTP1.0
response.setDateHeader("Expires", 0);
request.setCharacterEncoding("gb2312");
String site_name = request.getParameter("site_name");
String county_id = request.getParameter("county_id");
System.out.println(site_name); strsql = "select * from electricity where e_id=(select max(e_id) from electricity where flag=1 and print_flag=2 and ems_id=(select ems_id from ems where county_id="
+ county_id + " and site_name='" + site_name + "'))";
System.out.println(strsql);
String pre_df_message = "";
conn.executeQuery(strsql, rs);
if (rs.next()) {
pre_df_message = "上次抄见:" + rs.getString("current_copy")
+ " 电费金额:" + rs.getString("e_amount");
out.println(pre_df_message);
} else {
pre_df_message = "尚未录入任何电费信息或基站名有错,若第一次录入请注意填写月份差!";
out.println(pre_df_message);
}
%>
解决方案 »
- jquery.tablesorter.pager排序,重新跟新数据后,点击下一页就会跳到下下一页
- 在Tomcat中访问EJB的问题???
- 请教一个jsp+servlet+javaBean,采用MVC模式开发的,请教这可能是什么原因导致的
- 大家画Java项目的静态HTML页面Demo使用什么工具呢,进来说说看啊
- 关于java向excel中写数据的问题
- 用Eclipse写了一个JavaBean在Jsp调用,resultSet反回的总是空值请大虾指教,谢谢!
- 错误
- 【huxiweng】求抱大腿啊
- 简单的JAVA程序NoClassDefFoundError
- 请问post和get方法区别?
- 怎么把word文件导入页面编辑器
- JS路径问题
xmlHttp.open("POST", encodeURI(url), true);
个人认为最好能设置一个filter,指定编码格式为UTF-8