首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

请帮忙看一上 小弟我用Ajax向servlet发送请求 在servlet中接收不到参数都是为空的 这是哪里出有关问题了 多谢

2013-01-04 
请各位高手帮忙看一下我用Ajax向servlet发送请求 在servlet中接收不到参数都是为空的 这是哪里出问题了谢

请各位高手帮忙看一下 我用Ajax向servlet发送请求 在servlet中接收不到参数都是为空的 这是哪里出问题了 谢谢
jsp中的代码:
<script type="text/javascript">
 var request = null;
        function createRequest() {
            if (request != null) return;
            if (window.ActiveXObject) {
                request = new ActiveXObject("Microsoft.XMLHTTP");
            } else if (window.XMLHttpRequest) {
                request = new XMLHttpRequest();
            }
            if (request.overrideMimeType) {
                request.overrideMimeType("text/xml");
            }
        }
        function login() {
            var userName = document.getElementById("userName").value;
            var password = document.getElementById("password").value;
            alert(userName + "   " + password);
            createRequest();
            alert("创建对象完成"+request);
            var url = "./servlet/Myservlet? userName="+userName+"& password="+password;
            url=encodeURI(url);
            alert("url的值"+url);
            
            request.open("POST",url,true);
            request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
            alert("open对象完成");
            request.onreadystatechange=result;
            alert("回调完成");
            request.send(null);
            alert("消息 发送完成");
        }
        function result(){
          if(request.readyState==4){
            if(request.status==200){
              document.getElementById("loginState").innerHTML=request.responseText;
            }
          }
        }
    


    </script>

  </head>
  
  <body>
    <div id="loginState">
    <input type="text" id="userName" />
    <input type="password" id="password" />
    <input type="button" value="登录" style="font-size: 14px" onclick="login()" />
    </div>
  </body>
</html>

servlet 中的代码:

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out=response.getWriter();
response.setContentType("text/xml;charset=UTF-8");  
response.setCharacterEncoding("UTF-8");       
response.setHeader("Cache-Control", "no-cache");

String userName=request.getParameter("userName");
String password=request.getParameter("password");
System.out.println("userName"+userName+"password"+password);
if(userName=="mengzhengjie" && password=="123"){
 out.println("欢迎你"+userName);
}else{
out.println("用户名或密码错误");
}
}
谢谢
[解决办法]

 request.open("POST",url,true);
            request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
            alert("open对象完成");
            request.onreadystatechange=result;
            alert("回调完成");
            request.send(null);


改为:
 request.open("POST",url,true);
            request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
            alert("open对象完成");
 request.send(null);
            request.onreadystatechange=result;
            alert("回调完成");
           

[解决办法]
你的url用alert是正确的吗?没有乱码里面带中文?
你试试两次encodeURI改成url=encodeURI(encodeURI(url));
[解决办法]
  var url = "./servlet/Myservlet? userName="+userName+"& password="+password;
  request.open("POST",url,true);
  request.send(null);

LZ,你url带参数,是明显的GET方法提交数据,但你确实用POST方式,并且发送null,后台肯定就接收不到数据了,统一一下提交方式和数据
另外,最好用框架把,简洁

热点排行