Ajax乱码
AJAX中文乱码问题的解决方法有两种:
(1)页面端数据作一次encodeURI,服务器端稍作改变即可
面面端verify.js脚本:
view plaincopy to clipboardprint?
functionverify()
{
//1.接收html数据
//解决中文乱码问题的方法:1页面端发出的数据作一次encodeURI,服务器端使用
//解决中文乱码问题的方法:2页面端发出的数据作两次的encodeURI,服务器端作一次URLDecoder.decode(old,"UTF-8");
varurl="AJAXServer?name="+encodeURI($("#userName").val());//页面端发出的数据作一次encodeURI
url=convertURL(url);
$.get(url,function(data)
{
$("#result").html(data);
});
//2.对数据进行发送
//3.回调函数
}
functionconvertURL(url)
{
vartimetamp=(newDate()).valueOf();
if(url.indexOf("?")>=0)
{
url=url+"&t"+timetamp;
}
else
{
url=url+"?t"+timetamp;
}
returnurl;
}
functionverify()
{
//1.接收html数据
//解决中文乱码问题的方法:1页面端发出的数据作一次encodeURI,服务器端使用
//解决中文乱码问题的方法:2页面端发出的数据作两次的encodeURI,服务器端作一次URLDecoder.decode(old,"UTF-8");
varurl="AJAXServer?name="+encodeURI($("#userName").val());//页面端发出的数据作一次encodeURI
url=convertURL(url);
$.get(url,function(data)
{
$("#result").html(data);});
//2.对数据进行发送
//3.回调函数
}
functionconvertURL(url)
{
vartimetamp=(newDate()).valueOf();
if(url.indexOf("?")>=0)
{
url=url+"&t"+timetamp;
}
else
{
url=url+"?t"+timetamp;
}
returnurl;
}服务器端的程序稍作修改即可,对字符串用指定方式编码:
view plaincopy to clipboardprint?
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjavax.servlet.ServletException;
importjava.io.IOException;
importjava.io.PrintWriter;
importjava.net.URLDecoder;
/**
*CreatedbyIntelliJIDEA.
*User:Administrator
*Date:2009-1-5
*Time:21:26:55
*TochangethistemplateuseFile|Settings|FileTemplates.
*/
publicclassAJAXServerextendsHttpServlet
{
protectedvoiddoPost(HttpServletRequesthttpServletRequest,HttpServletResponsehttpServletResponse)throwsServletException,IOException{
doGet(httpServletRequest,httpServletResponse);
}
protectedvoiddoGet(HttpServletRequesthttpServletRequest,HttpServletResponsehttpServletResponse)throwsServletException,IOException{
//写校验代码
try{
httpServletResponse.setContentType("text/html;charset=utf-8");
PrintWriterout=httpServletResponse.getWriter();
Integerinte=(Integer)httpServletRequest.getSession().getAttribute("total");
inttemp=0;
//1.取参数信息
if(inte==null)
{
temp=1;
}
else
{
temp=inte.intValue()+1;
}
httpServletRequest.getSession().setAttribute("total",temp);
Stringold=httpServletRequest.getParameter("name");
Stringname=newString(old.getBytes("iso8859-1"),"UTF-8");//服务器稍作修改即可,用指定方式编码
//2.检查参数是否有问题
if(old==null||old.length()==0){
out.println("用户名不能为空");
}else{
//3.校验操作
if(name.equals("wangxingkui")){
//4。和传统应用不同之处。这一步需要将用户感兴趣的数据返回给页面段,而不是将一个新的页面发送给用户
//写法没有变化,本质发生了改变
out.println("用户名["+name+"]已经存在,请使用其他用户名,"+temp);
}else{
out.println("用户名["+name+"]尚未存在,可以使用该用户名注册,"+temp);
}
}
}catch(Exceptione){
e.printStackTrace();
}
}
}
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjavax.servlet.ServletException;
importjava.io.IOException;
importjava.io.PrintWriter;
import java.net.URLDecoder;/**
*CreatedbyIntelliJIDEA.
*User:Administrator
*Date:2009-1-5
*Time:21:26:55
*TochangethistemplateuseFile|Settings|FileTemplates.
*/
publicclassAJAXServerextendsHttpServlet
{
protectedvoiddoPost(HttpServletRequesthttpServletRequest,HttpServletResponsehttpServletResponse)throwsServletException,IOException{
doGet(httpServletRequest,httpServletResponse);
}protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException { //写校验代码
try{
httpServletResponse.setContentType("text/html;charset=utf-8");
PrintWriterout=httpServletResponse.getWriter();
Integerinte=(Integer)httpServletRequest.getSession().getAttribute("total");
inttemp=0;
//1.取参数信息
if(inte==null)
{
temp=1;
}
else
{
temp=inte.intValue()+1;
}
httpServletRequest.getSession().setAttribute("total",temp);Stringold=httpServletRequest.getParameter("name");
Stringname=newString(old.getBytes("iso8859-1"),"UTF-8");//服务器稍作修改即可,用指定方式编码
//2.检查参数是否有问题
if(old==null||old.length()==0){
out.println("用户名不能为空");
} else{//3.校验操作
if(name.equals("wangxingkui")){
//4。和传统应用不同之处。这一步需要将用户感兴趣的数据返回给页面段,而不是将一个新的页面发送给用户
//写法没有变化,本质发生了改变
out.println("用户名["+name+"]已经存在,请使用其他用户名,"+temp);
}else{
out.println("用户名["+name+"]尚未存在,可以使用该用户名注册,"+temp);
}
}
}catch(Exceptione){
e.printStackTrace();
}
}
}******************************************
(2)解决中文乱码问题:页面端发出的数据作两次encodeURI,服务器作一URLDecoder.decode(old,UTF-8)
页面端verify.js的脚本:
view plaincopy to clipboardprint?
functionverify()
{
//1.接收html数据
//解决中文乱码问题的方法:1页面端发出的数据作一次encodeURI,服务器端使用
//解决中文乱码问题的方法:2页面端发出的数据作两次的encodeURI,服务器端作一次URLDecoder.decode(old,"UTF-8");
varurl="AJAXServer?name="+encodeURI(encodeURI($("#userName").val()));//页面端的数据作两次encodeURI
url=convertURL(url);
$.get(url,function(data)
{
$("#result").html(data);
});
//2.对数据进行发送
//3.回调函数
}
functionconvertURL(url)
{
vartimetamp=(newDate()).valueOf();
if(url.indexOf("?")>=0)
{
url=url+"&t"+timetamp;
}
else
{
url=url+"?t"+timetamp;
}
returnurl;
}
functionverify()
{
//1.接收html数据
//解决中文乱码问题的方法:1页面端发出的数据作一次encodeURI,服务器端使用
//解决中文乱码问题的方法:2页面端发出的数据作两次的encodeURI,服务器端作一次URLDecoder.decode(old,"UTF-8");
varurl="AJAXServer?name="+encodeURI(encodeURI($("#userName").val()));//页面端的数据作两次encodeURI
url = convertURL(url);$.get(url,function (data)
{
$("#result").html(data);});
//2.对数据进行发送
//3.回调函数
}
functionconvertURL(url)
{
vartimetamp=(newDate()).valueOf();
if(url.indexOf("?")>=0)
{
url=url+"&t"+timetamp;
}
else
{
url=url+"?t"+timetamp;
}
returnurl;
}服务器端的数据作一次URLDecoder.decode(old,UTF-8);的解码工作,服务器端只作一次的解码工作就可以了,因为在浏览器的内部还会做一次解码,所以服务器只作一次就可以了
view plaincopy to clipboardprint?
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjavax.servlet.ServletException;
importjava.io.IOException;
importjava.io.PrintWriter;
importjava.net.URLDecoder;
/**
*CreatedbyIntelliJIDEA.
*User:Administrator
*Date:2009-1-5
*Time:21:26:55
*TochangethistemplateuseFile|Settings|FileTemplates.
*/
publicclassAJAXServerextendsHttpServlet
{
protectedvoiddoPost(HttpServletRequesthttpServletRequest,HttpServletResponsehttpServletResponse)throwsServletException,IOException{
doGet(httpServletRequest,httpServletResponse);
}
protectedvoiddoGet(HttpServletRequesthttpServletRequest,HttpServletResponsehttpServletResponse)throwsServletException,IOException{
//写校验代码
try{
httpServletResponse.setContentType("text/html;charset=utf-8");
PrintWriterout=httpServletResponse.getWriter();
Integerinte=(Integer)httpServletRequest.getSession().getAttribute("total");
inttemp=0;
//1.取参数信息
if(inte==null)
{
temp=1;
}
else
{
temp=inte.intValue()+1;
}
httpServletRequest.getSession().setAttribute("total",temp);
Stringold=httpServletRequest.getParameter("name");
Stringname=URLDecoder.decode(old,"UTF-8");//这是服务器端做的一次解码工作
//2.检查参数是否有问题
if(old==null||old.length()==0){
out.println("用户名不能为空");
}else{
//3.校验操作
//Stringname=old;
if(name.equals("wangxingkui")){
//4。和传统应用不同之处。这一步需要将用户感兴趣的数据返回给页面段,而不是将一个新的页面发送给用户
//写法没有变化,本质发生了改变
out.println("用户名["+name+"]已经存在,请使用其他用户名,"+temp);
}else{
out.println("用户名["+name+"]尚未存在,可以使用该用户名注册,"+temp);
}
}
}catch(Exceptione){
e.printStackTrace();
}
}
}转载:偷星九月天漫画免费阅读
相关推荐
结束数据方法的参数,该如何定义?-- 集合为自定义实体类中的结合属性,有几个实体类,改变下标就行了。<input id="add" type="button" value="新增visitor&quo