我有一個註冊表單,我使用AJAX驗證「首選登錄標識」,因此它搜索用戶表並顯示它是否可用,並顯示在旁邊文本框「用戶名可用」或「用戶名不可用」。如何將servlet中的值傳遞給另一個jsp中的javascript
我的要求是當它不可用我想通過文本「用戶名不可用」回到從Servlet的JSP中的JavaScript,以便我可以阻止用戶繼續進行表單。我相信我可以使用AJAX來做到這一點。但我不知道該怎麼做。有人能幫我解決這個問題嗎?
我有一個註冊表單,我使用AJAX驗證「首選登錄標識」,因此它搜索用戶表並顯示它是否可用,並顯示在旁邊文本框「用戶名可用」或「用戶名不可用」。如何將servlet中的值傳遞給另一個jsp中的javascript
我的要求是當它不可用我想通過文本「用戶名不可用」回到從Servlet的JSP中的JavaScript,以便我可以阻止用戶繼續進行表單。我相信我可以使用AJAX來做到這一點。但我不知道該怎麼做。有人能幫我解決這個問題嗎?
我可以使用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);
}
}
你需要一些標誌在消息中發送對象。你可以使用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);
}
}
這是迄今爲止從服務器獲取JSON對象的方式,使用getJSON來代替... http://api.jquery.com/jQuery.getJSON/ –
親愛的朋友,我得到正確的可用性。如果用戶名不可用,它會顯示該消息。現在,即使它顯示該消息,仍然有用戶試圖提交它不應該允許。所以我的想法是實現它的文本顯示在div中,如果文本是「用戶名不可用」,它應該返回false而不是轉發。但它不起作用。 –
var tt = document.getElementById(「invlist」); var myDiv = tt.firstChild; var myText = myDiv.data; var test =「這位投資者已經存在」;如果(myText ==測試){ alert(test); 返回false } –
這就是我嘗試使用的JavaScript代碼。 –