1

AJAX を使用して「優先ログイン ID」を検証する登録フォームがあるため、ユーザー テーブルが検索され、利用可能かどうかが表示され、「利用可能なユーザー名」または「利用できないユーザー名」というテキスト ボックスの横に表示されます。

私の要件は、それが利用できない場合、「ユーザー名が利用できません」というテキストをサーブレットから JSP の JavaScript に戻して、ユーザーがフォームを続行できないようにすることです。私はAJAXを使用してそれを行うことができると信じています。しかし、私はそれを行う方法がわかりません。誰かがコードでこれを手伝ってくれますか?

4

2 に答える 2

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>

サーブレット (部分)

@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);
     }

}
于 2012-05-07T06:47:46.823 に答える
0

メッセージに何らかのフラグを付けてオブジェクトを送信する必要があります。これにはjsonを使用できます。サーブレット側:

// 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);
    }
}
于 2012-05-07T11:40:42.037 に答える