2014-11-14 18 views
0

我試圖在servlet中獲取參數,但我收到的所有東西都是空值。 我的JSP代碼:無法在servlet中獲取參數?

<form id="loginForm" name="loginForm" class="loginForm" method="POST" > 
     <table cellpadding="10px" border="0"> 
      <tr> 
       <td class="textLogin">Username :</td> 
       <td class="inputColumn"> 
        <input id="inputUserName" class="inputText" type="text" name="username" value="Username" 
        onfocus="if(this.value=='Username'){this.value='';}" onblur="if(this.value==''){this.value='Username';}"/> 

       </td> 
      </tr> 
      <tr> 
       <td class="textLogin">Password :</td> 
       <td class="inputColumn"> 
        <input id="inputPassword" class="inputText" type="password" name="password" value="" 
        onfocus="" onblur=""/> 
       </td> 
      </tr> 
      <tr> 
       <td class="textLogin" colspan="2"> 
        <span id="noityText" ></span> 
       </td> 
      </tr> 
      <tr> 
       <td class="resetColumn"><button class="basicButton" id="resetLogin" type="reset" >Reset</button></td> 
       <td><button class="basicButton" id="submitLogin" type="submit" >Submit</button></td> 
      </tr> 
     </table> 
</form> 

JAVASCRPIT:

$(document).ready(function() { 
$("#loginForm").submit(function(e){ 
    e.preventDefault(); 
}); 
$("#submitLogin").click(function(){ 
var userName=$("#inputUserName").val(); 
userName=userName.trim(); 
var password=$("#inputPassword").val(); 
password=password.trim(); 
//get the form data and then serialize that 
dataString = $("#loginForm").serialize(); 
dataString ="username"+userName; 
console.log(dataString); 
if((userName=='')||(userName=='Username')){ 
    //$("#noityText").html("<span id='noityText' >Vui lòng điền tên đăng nhập</span>"); 
    $("#noityText").text("Vui lòng điền tên đăng nhập"); 
} 
else{ 
    $("#noityText").text(""); 
} 
$.ajax({ 
    type:"POST", 
    url:"/MavenWebApp/login", 
    data:dataString, 
    dataType:"json", 
    success:function(data,textStatus, jqXHR){ 
     if(data.success){ 
      $("#noityText").text("Đăng nhập thành công :D"); 
      console.log(data); 
     } 
     else{ 
      $("#noityText").text("Đăng nhập thất bại :D"); 
      console.log(data); 
     } 
    }, 
    error:function(jqXHR,textStatus, errorThrow){ 
     $("#noityText").text("Errors"); 
    }, 
    beforeSend:function(jqXHR,settings){ 
     $("#noityText").text("Start send"); 
    }, 
    complete:function(jqXHR,textStauts){} 
    }); 
}); 
}); 

和servlet:

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    System.out.println("In servlet :D "); 
    String userName=request.getParameter("username"); 
    //userName=userName.trim(); 
    String password=request.getParameter("password"); 
    //password=password.trim(); 
    System.out.println(password); 
    PrintWriter out = response.getWriter(); 
    response.setContentType("text/html"); 
    response.setHeader("Cache-control", "no-cache, no-store"); 
    response.setHeader("Pragma", "no-cache"); 
    response.setHeader("Expires", "-1"); 

    response.setHeader("Access-Control-Allow-Origin", "*"); 
    response.setHeader("Access-Control-Allow-Methods", "POST"); 
    response.setHeader("Access-Control-Allow-Headers", "Content-Type"); 
    response.setHeader("Access-Control-Max-Age", "86400"); 

    Gson gson = new Gson(); 
    JsonObject myObj = new JsonObject(); 
    if (this.getUser(userName, password)){ 
     myObj.addProperty("success", true); 
    }else{ 
     myObj.addProperty("success", false); 
    } 
    out.println(myObj.toString()); 
    out.close(); 


} 

這是Eclipse中的文字顯示:

In servlet :D - service 
null 
null 

用戶名字符串和密碼在servlet爲null!我該如何解決這個錯誤? :d 很抱歉,如果我的問題讓你不舒服,因爲我beginer和我的英語不是很好:d

回答

0
//get the form data and then serialize that 
dataString = $("#loginForm").serialize(); 

這看起來不錯(但檢查此字符串是什麼),但你有

覆蓋它
dataString ="username"+userName; 

爲什麼要覆蓋它?如果你這樣做,你至少需要保持它的形式編碼(例如,你需要參數名稱和值之間的=)。

0

嘗試使用serializeArray() -

dataString = $("#loginForm").serializeArray(); 

,並刪除此行 -

dataString ="username"+userName;