新手AJAX Qn:request.send(信息)

时间:2011-08-01 08:03:56

标签: javascript ajax servlets

我是AJAX的新手,因此这个问题。我想将我的javascript代码中的一些信息发送到我的servlet。

function getDetails() {
    vals = document.getElementById("name").value;//works: vals does get inputted value
    request = createRequest();
    if (request == null) {
      alert("Unable to create request");
      return;
    }
    var url= "ValidateUser.do";
    request.open("POST", url, true);
    request.onreadystatechange = displayDetails;
    //How do I send the value of "vals" to my servlet?
    request.send("name="+vals);
}

当我在我的servlet上运行req.getParameter(“name”)时,即使“vals”确实包含输入的值,我也总是没有值。所以我的问题是 - 如何从我的servlet访问这个值?

修改

function createRequest() {
  try {
    request = new XMLHttpRequest();
  } catch (tryMS) {
    try {
      request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (otherMS) {
      try {
        request = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (failed) {
        request = null;
      }
    }
  }
  return request;
}

进一步编辑: Servlet代码:我希望println语句打印出名称。

//shortened: this method is called by a ControllerServlet
public Object perform(HttpServletRequest req, HttpServletResponse resp) {
    //retrieve customer from database
    model = SeekerCustomer.getCustomer(req.getParameter("name"));
    System.out.println(req.getParameter("name"));
}

1 个答案:

答案 0 :(得分:1)

 function ajaxRequest(){
  var activexmodes=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"] //activeX versions to check for in IE
  if (window.ActiveXObject){ //Test for support for ActiveXObject in IE first (as XMLHttpRequest in IE7 is broken)
   for (var i=0; i<activexmodes.length; i++){
    try{
     return new ActiveXObject(activexmodes[i])
    }
    catch(e){
     //suppress error
    }
   }
  }
  else if (window.XMLHttpRequest) // if Mozilla, Safari etc
   return new XMLHttpRequest()
  else
   return false
 }

 function postReq(){
 var mypostrequest=new ajaxRequest()
 mypostrequest.onreadystatechange=function(){
  if (mypostrequest.readyState==4){
   if (mypostrequest.status==200 || window.location.href.indexOf("http")==-1){
    document.getElementById("my_Result_tag").innerHTML=mypostrequest.responseText //this is where the results will be put!
   }
   else{
    alert("An error has occured making the request")
   }
  }
 }
 var vals = document.getElementById("name").value
 var parameters="name="+vals
 mypostrequest.open("POST", "ValidateUser.do", true)
 mypostrequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
 mypostrequest.send(parameters)
 }

在servlet访问值中使用:

 request.getParameter("name");