0

ユーザー名を確認する必要があるため、ユーザーがユーザー名を入力すると、バックエンドに送信してその可用性を確認する必要があります。次のコードがありますが、バックエンドから利用可能または利用不可のメッセージを受け取ることに疑いがあります。

   function verifyUsername(value){
           if(window.XMLHttpRequest)
            {
                xmlhttp = new XMLHttpRequest();
            }
            else
            {
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange=function()
            {
                if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
                {
                  document.getElementById("mymessage").innerHTML=xmlhttp.responseText;
                } 
            }
            xmlhttp.open("get","verifyUsername?username="+value,false);
            xmlhttp.send();
        }


  ....
  <div id="mymessage"></div>
   ....

サーバー側疑似コード (実際の実装: Java)

 ....
 if(verify(username))
    return "Username is not available";
 else
   return "username is available";
4

3 に答える 3

1

問題を正しく理解していれば、それは「サーバー側から正しい応答を返す」ことです。実際の実装は Java として言及されているため、Ajax リクエストが送信されるバックエンド サーブレットがあると想定しています。doGet メソッドで HttpServletResponse オブジェクトのハンドルを取得し (get を使用しているため)、ロジックを追加してユーザー名を確認し、応答テキストを送り返す必要があります。何かのようなもの

public void doGet(HttpServletRequest request,HttpServletResponse response)
  throws ServletException, IOException 
{
    String username = request.getParameter(username);
    String responseText = "";
    boolean isUserAval;
    //add your logic to verify username setting isUserAval to true/false accordingly

    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    if(isUserAval)
    {
       responseText = "Username is available";
    }
    else
    {
       responseText = "Username is not available";
    }
    out.println(responseText);
    out.close();
}
于 2013-06-28T02:38:29.083 に答える
1

これの jQuery の例を示します。純粋な JavaScript バージョンについては触れません。探しているのは、ajax リクエストが返されたときに起動するコールバック関数です。

// listen to a click event on a button OR something 
$("#buttonName").on("click", function(event){

    // prevent any default activity
    event.preventDefault();

    // get your value 
    var value = $("#mymessage").val();

    // jQuery ajax event
    $.ajax({
      url : "verifyUsername?username="+value,
      type: 'GET'
    }).done(function ( data ) {
       if ( console && console.log ) {
      console.log( "Data returned :"+data )
       // do something else
    }
    }):

.done() は成功のコールバック オプションですが、他にもあります。

    // jQuery ajax event
        $.ajax({
          url : "verifyUsername?username="+value,
          type: 'GET'
        })
    // successful callback
    .done(function(){ // success })
    // fail/error callback
    .fail(function(){ // fail })
    // completed callback 
    .always(function(){ // will always execute, even if request fails })
});

参考:http ://api.jquery.com/jQuery.ajax/

于 2013-06-28T01:58:15.177 に答える
0

以下のこの関数を使用してください...また、リクエストにはreadystateなどがあり、prolly statusCodeが200〜202の間で、ready stateが4で、statusTextがOKであることに気付くでしょう。

var request = $.get(url, function(event){
   //If your within your application your url can be the method you need
   //I.E. Ruby URL post would be /api/v1/users/find_user_by_ID
   //This URL Points to the api/v1 folder than the users controller
   //Than finally the method inside the controller (find_user_by_ID)
}

また、PHP または Ruby を使用している場合は、javascript を使用してクラスを追加および削除するか、非表示と各ステップで何が起こったかに応じて表示されます。

于 2016-04-11T20:01:35.443 に答える