客户端代码:
<body>
<form method="POST" name="form1" action="test2.jsp">
<p><input type="text" name="p1" size="20"><input type="button" value="按钮" name="B1"><input type="reset" value="全部重写" name="B2"></p>
</form>
</body>
<script language="JavaScript">
function form1.B1.onclick()
{
do_post();
}
function getXMLHttpRequest()
{
if(window.XMLHttpRequest)
    {
     return new XMLHttpRequest();
}
    else if(window.ActiveXObject)
    {
     request = new ActiveXObject("Microsoft.XMLHTTP");        
     if(!request)
{
request = new ActiveXObject("Msxml2.XMLHTTP");
}   
        return request;
}
}
function do_post()
{
var xmlhttprequest=getXMLHttpRequest();
if(xmlhttprequest)
{
var param="";
param=param+"p2="+escape(form1.p1.value);
alert(param);
xmlhttprequest.open("POST","test2.jsp",true);
xmlhttprequest.onreadystatechange = gotresult;
xmlhttprequest.setrequestheader("content-length",param.length);  
xmlhttprequest.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

xmlhttprequest.send(param); 
}
function gotresult()
{
if (xmlhttprequest.readyState == 4)
{
if(xmlhttprequest.status == 200 )
{
//prompt('',xmlhttprequest.responseText);
}
}
}
}
服务器端:
<%
try
{
String t_p2=request.getParameter("p2"); System.out.print(t_p2);
}
catch(Exception e)
{
e.printStackTrace();
}%>只要含有汉字,在控制台就显示null

解决方案 »

  1.   

    说明一下,我用escape是为了对汉字编码
      

  2.   

    很荣幸,今天我也遇到这个问题了,上网查了n篇帖子,都是说什么escape转码再unescape反转试过后都是null,只要是中文就null,英文就正常。最后用一狠招,直接解决问题把编码都设成utf-8,搞定
      

  3.   

    那你用encodeURI这个方法呢?我用这个没问题
      

  4.   

    楼上的,你大概用的GET方法吧
      

  5.   

    jy02209334,如果你的没问题,我看看你的代码,浏览器合服务器端的,POST
      

  6.   

    我尝试过encodeURI,但是在jsp里面仍然接受乱码
      

  7.   

    param=param+"p2="+encodeURI(form1.p1.value);这样可以不? 服务器端我就设了一下request的characterEncoding为utf-8
      

  8.   

    encodeURI ,编码用utf-8 接收的时候无需 iso8895_1,很奇怪
      

  9.   

    param=param+ "p2= "+escape(escape(form1.p1.value)); 
    需要两次编码