大家好,今天在写留言板的功能时,需要用到ajax,也需要传递参数,但是传递中文时总是报错。现在跟大家分享下。
var user = document.getElementById('span_id').innerText;
var mess = $('input.textbox').val();
var xmlhttp;
if (window.XMLHttpRequest)
{
// IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
xmlhttp=new XMLHttpRequest();
}
else
{
// IE6, IE5 浏览器执行代码
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("text").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("POST","MessageAction.jsp?user="+encodeURI(encodeURI(user))+"&mess="+encodeURI(encodeURI(mess)),true);
xmlhttp.send();
}
在倒数第二行。我用open传递参数,此时user是中文,我需要进行编码。也就是
encodeURI(encodeURI(user))
在后台接收的时候
request.setCharacterEncoding("utf-8");
response.setContentType("text/xml;charset=utf-8");
String username = request.getParameter("user");
String message = request.getParameter("mess");
try {
username = URLDecoder.decode(username,"utf-8");
message = URLDecoder.decode(message,"utf-8");
} catch (Exception e) {
e.printStackTrace();
}
核心代码块就是倒数的第三和第四行:解码。
这样就能完美解决中文乱码问题啦。有问题可以留言哦