如何在另一个jsp中将值从servlet传递给javascript

时间:2012-05-07 06:37:07

标签: javascript ajax jsp servlets

我有一个注册表单,我正在使用AJAX验证“首选登录ID”,因此它搜索用户表并显示它是否可用,并显示在文本框“username available”或“username not”旁边可用”。

我的要求是当它不可用时我想将文本“用户名不可用”从Servlet传递回JSP中的javascript,以便我可以阻止用户继续处理表单。我相信我可以使用AJAX来做到这一点。但我不知道该怎么做。有人可以用代码帮我解决这个问题吗?

2 个答案:

答案 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);
    }
}