2012-05-07 29 views
1

我有一個註冊表單,我使用AJAX驗證「首選登錄標識」,因此它搜索用戶表並顯示它是否可用,並顯示在旁邊文本框「用戶名可用」或「用戶名不可用」。如何將servlet中的值傳遞給另一個jsp中的javascript

我的要求是當它不可用我想通過文本「用戶名不可用」回到從Servlet的JSP中的JavaScript,以便我可以阻止用戶繼續進行表單。我相信我可以使用AJAX來做到這一點。但我不知道該怎麼做。有人能幫我解決這個問題嗎?

回答

2

我可以使用jQuery,特別是get()方法爲例

這裏是一個僞解決方案(沒有測試它,但它的基本方法,我會用)

的JavaScript

var userIsAvailable = false; 
function checkUsernameAvailability(userIdToCheck){ 
    $.get("pathToServlet",{userId: userIdToCheck},function(resultMessage){ 
     userIsAvailable = resultMessage=="username available" //this is bad practice, just an example, pass true/false  
     $("#userAvailabilityMessage").text(resultMessage); 
    } 
}); 

HTML

<form onsubmit="if(!userIsAvailable){alert('user is not available')}; return userIsAvailable"> 
    <label for="userId">preferred login id<label> 
    <input id="userId" ... type="text" onblur="checkUsernameAvailability(this.value)"> 
    <div id="userAvailabilityMessage" /> 
    ... 
</form> 

Servlet的(部分)

@WebServlet("/pathToServlet") 
public class MyServlet extends HttpServlet { 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
      String result; 

      if(isUserNameAvailable(request.getParameter("userId"))){ 
        result = "username available"; 
      }else{ 
        result = "username not available"; 
      } 
      response.setContentType("text/plain"); 
      response.getWriter().print(result); 
    } 

} 
+0

親愛的朋友,我得到正確的可用性。如果用戶名不可用,它會顯示該消息。現在,即使它顯示該消息,仍然有用戶試圖提交它不應該允許。所以我的想法是實現它的文本顯示在div中,如果文本是「用戶名不可用」,它應該返回false而不是轉發。但它不起作用。 –

+0

var tt = document.getElementById(「invlist」); var myDiv = tt.firstChild; var myText = myDiv.data; var test =「這位投資者已經存在」;如果(myText ==測試){ alert(test); 返回false } –

+0

這就是我嘗試使用的JavaScript代碼。 –

0

你需要一些標誌在消息中​​發送對象。你可以使用json來做到這一點。 在servlet的一面:

// This object we will transfere from java to javascript 
public class Message { 
    private boolean error; 
    private String errorMessage; 

    // Getters and setters ommited 
} 

// Servlet code - return content 

Message message = new Message(); 
message.setError(true); 
message.setErrorMessage("Your error message"); 
Gson gson = new Gson(); // GSON - java json library from Google. I prefer it 
String content = gson.toJson(message); 
response.setContentType("text/json"); 
response.getWriter().print(content); 

最後的javascript代碼:

function processRequest() { 
    var result = jQuery.ajax ({ 
     url: "your.url", 
     method: "post", 
     async: false, 
     data: "your=data&andsomedate=somedata" 
    }); 

    // Creating object from json 
    var message = jQuery.parseJSON(result.responseText); 

    // Now we can access all object fields: 
    if(message.error) { 
     alert("Error message: " + message.errorMessage); 
    } 
} 
+0

這是迄今爲止從服務器獲取JSON對象的方式,使用getJSON來代替... http://api.jquery.com/jQuery.getJSON/ –

相關問題