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();

}

}

}

转载:偷星九月天漫画免费阅读

相关推荐