2017-06-26 39 views
0

我在谷歌搜索了用戶名可用性。這個問題沒有任何好的解決方案。這裏我試圖檢查數據庫表user中的用戶名可用性。我有以下代碼Spring MVC使用ajax檢查用戶名可用性

<input type="text" name="username" id="usernamee" tabindex="1"class="form-control" placeholder="Username"><span class="status"> 

這是我script代碼

<script> 
$(function(){ 
    $("#usernamee").blur(function(){ 
     var uname = $('#usernamee').val(); 
     if(uname.length >= 3){ 
      $(".status").html("<font> Checking availability...</font>"); 
      $.ajax({ 
       type: "GET", 
       url: "/exist/"+uname, 
       success: function(msg){ 

        $(".status").html(msg); 

        } 
       }); 
      } 
     else{ 

      $(".status").html("<font color=red>Username should be <b>3</b> character long.</font>"); 
     } 

    }); 
}); 
</script> 

這是我的控制器代碼

@RequestMapping(value = { "/exist/{name}" }, method = RequestMethod.POST) 
public void checkUsername(@PathVariable("name") String username, HttpServletResponse response , HttpServletRequest request) throws IOException { 

    response.setContentType("text/html;charset=UTF-8"); 
    PrintWriter out = response.getWriter(); 

    try { 

     String connectionURL = "jdbc:mysql://localhost:81/name"; // students is my database name 
     Connection connection = null; 
     Class.forName("com.mysql.jdbc.Driver").newInstance(); 
     connection = (Connection) DriverManager.getConnection(connectionURL, "root", "root"); 
     PreparedStatement ps = (PreparedStatement) connection.prepareStatement("select username from users where username=?"); 
     ps.setString(1,username); 
     ResultSet rs = ps.executeQuery(); 

     if (!rs.next()) { 
      out.println("<font color=green><b>"+username+"</b> is avaliable"); 
     } 
     else{ 
     out.println("<font color=red><b>"+username+"</b> is already in use</font>"); 
     } 
     out.println(); 



    } catch (Exception ex) { 

     out.println("Error ->" + ex.getMessage()); 

    } finally { 
     out.close(); 
    } 

} 

當我運行這些代碼status span標籤僅只能說明checking availability.....。我的控制器沒有被調用。上面的代碼是從互聯網上覆制而來的。歡迎任何建議。 預先感謝您

+0

你期望什麼?什麼是一個很好的解決方案?你有什麼問題? –

+0

上面的代碼不能按預期工作 我想顯示任一用戶名是否可用 –

+0

我編輯了我的問題一下關於錯誤 –

回答

1

您發送GET請求

$.ajax({ 
      type: "GET" 

但是你的控制器期望POST

@RequestMapping(value = { "/exist/{name}" }, method = RequestMethod.POST) 

要麼改變AJAX張貼或控制器到達

+0

仍然不能正常工作 –

+0

不工作?任何錯誤?將它們添加到問題?任何影響(wrng文本等)?控制器是否被調用?將一些日誌添加到控制器並檢查它們。 – StanislavL

+0

status span僅顯示檢查可用性 –

0

我還沒有得到你從上面提到的問題提出問題,但是你應該爲ajax請求添加@ResponseBody。 我記得我上面所說的,PrintWriter被使用和@ResponseBody是不需要的,但使用@ResponseBody會更好

+0

我編輯了我的問題一點關於錯誤 –

+0

爲checkUsername mehotd添加一個斷點,breankpoint是否有意義? –