读书人

请帮忙看一上 小弟我用Ajax向servlet

发布时间: 2013-01-04 10:04:12 作者: rapoo

请各位高手帮忙看一下 我用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,后台肯定就接收不到数据了,统一一下提交方式和数据
另外,最好用框架把,简洁

读书人网 >Java Web开发

热点推荐