【发布时间】:2011-05-09 14:08:23
【问题描述】:
我正在使用 XMLHttpRequest 创建一个简单的表单提交并从 servlet 获取会话变量。但似乎没有任何效果。有人能指出我哪里出错了吗?
这是表格
<form method="post" target="_self" action="/temp/Welcome.html">
<table>
<tr>
<td>Email</td>
<td><input type="text" id="email" name="email" value="a@a.com"></td>
</tr>
<tr>
<td>Project ID</td>
<td><input type="text" id="projectid" name="projectid" value="1111"></td>
</tr>
<tr>
<td colspan="2" align="right"><input type="button" id="submitbutton" value="Submit" onclick="submitLogin()"></td>
</tr>
</table>
</form>
这里是 submitLogin 函数
function submitLogin()
{
var url_action="/temp/Login";
var client;
var dataString;
if (client.XMLHttpRequest){ // IE7+, Firefox, Chrome, Opera, Safari
client=new XMLHttpRequest();
} else { // IE6, IE5
client=new ActiveXObject("Microsoft.XMLHTTP");
}
client.onreadystatechange=function(){
alert(client.responseText);
if(client.readyState==4&&client.status==200)
{
alert(client.responseText);
}
else
alert("Error: return status code "+client.status+" "+client.statusText);
};
dataString="email="+document.getElementById("email").value;
client.open("POST",url_action,true);
client.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
client.send(dataString);
}
和我在 Login.java servlet 中的 post 方法
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
PrintWriter out = response.getWriter();
response.setContentType("text/plain");
paramMap=request.getParameterMap();
if (paramMap == null)
throw new ServletException(
"getParameterMap returned null in: " + getClass().getName());
iterator=paramMap.entrySet().iterator();
//System.out.println(paramMap.size());
String str="";
while(iterator.hasNext())
{
Map.Entry me=(Map.Entry)iterator.next();
String[] arr=(String[])me.getValue();
emailId=arr[0];
//System.out.println(me.getKey()+" > "+emailId);
}
rand=new Random();
randomInt=rand.nextInt(1000000);
emailId=randomInt+emailId;
System.out.println(emailId);
out.println(emailId);
/*creates a new session if a session does not exist already*/
session=request.getSession();
session.setAttribute("uid", emailId);
out.close();
}
警报和 System.out 似乎都没有显示任何响应。请指导我。谢谢
注意:在 IE 8 中它显示 xmlhttprequest 为空或不是对象,login.js 在第 9 行
【问题讨论】:
-
第 9 行是什么?请不要让我们猜测。
-
如果您使用 AJAX 做任何事情,我强烈建议您使用 jQuery。他们已经发现并修复了几乎所有的跨浏览器错误,并使其更易于控制。
-
您是否考虑过使用 JQuery 来简化您的代码?
-
@Thomas:我在第 1 行发现了错误。 9 我发了。 :) @Alastair 和 @Codemwnci:我使用 AJAX 来做同样的事情 stackoverflow.com/questions/5854753/… 只是想尝试使用纯 html 和 javascript。谢谢大家:)
-
我同意,jQuery 让使用 AJAX 变得更容易。我不是 AJAX 专家,并且经常尝试不要在 JavaScript 中编写太多代码,但即使我可以在大约一个小时内使用 jQuery 设置一些 AJAX。它只适用于我们使用的浏览器(IE 7+、Safari、FF 3.5+)。