2011-05-09 41 views
0

我正在使用XMLHttpRequest来创建一个简单的表单submitand从servlet获取会话变量。但似乎没有任何工作。有人可以指出我哪里错了吗?XMLHttpRequest请求有什么问题?

这里是形式

<form method="post" target="_self" action="/temp/Welcome.html"> 
    <table> 
     <tr> 
      <td>Email</td> 
      <td><input type="text" id="email" name="email" value="[email protected]"></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我的帖子方法

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(); 
} 

无警报和系统.out似乎显示任何回应。请指导我。由于

注:IE 8这表明XMLHttpRequest是空或不是对象,login.js在行号:9

+2

第9行是什么?请不要让我们猜测。 – Thomas 2011-05-09 05:53:20

+2

我强烈建议使用jQuery,如果你正在做任何与AJAX。他们已经找到并修复了几乎所有的跨浏览器错误,并使其更易于控制。 – 2011-05-09 05:54:57

+0

你有没有考虑过使用JQuery来简化你的代码? – Codemwnci 2011-05-09 05:55:23

回答

4

看起来你在你的Java脚本

var client; 

if (client.XMLHttpRequest){ 
    client=new XMLHttpRequest(); 
} else { 
    client=new ActiveXObject("Microsoft.XMLHTTP"); 
} 

您声明某个变量称为客户端,并要求它为它有一个简单的拼写错误的XMLHttpRequest成员。你可能打算使用window.XMLHttpRequest。

+0

谢谢,我想通了 – abi1964 2011-05-09 06:01:04

0

对不起我的坏。这是一个if (window.XMLHttpRequest)而不是if (client.XMLHttpRequest)现在工作正常。

相关问题