我有一个注册表单,我正在使用AJAX验证“首选登录ID”,因此它搜索用户表并显示它是否可用,并显示在文本框“username available”或“username not”旁边可用”。
我的要求是当它不可用时我想将文本“用户名不可用”从Servlet传递回JSP中的javascript,以便我可以阻止用户继续处理表单。我相信我可以使用AJAX来做到这一点。但我不知道该怎么做。有人可以用代码帮我解决这个问题吗?
答案 0 :(得分: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);
}
}
答案 1 :(得分: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);
}
}