0

こんにちは皆さん、登録時にユーザー名の可用性を確認しようとしていますが、フォームを送信する必要があることを知るためにfalse、trueを返すことに問題があります

だから私は2つの変数でそれを作りました-結果と待機ですが、結果を待つとページがフリーズします

function checkUser( u ) {
    var wait = true,result;
    $.ajax({
        url: "register.php",
        data: "Available=" + u.val(),
        type: "GET",
        cache: false,
        success: function(Answer){
            if(Answer == "Taken"){
                result = false;
                updateTips("Потребителското име е заето!");
            } else{
                result = true;
            }
            wait = false;
        }
    });
    while(wait){}
    return result;
}
4

4 に答える 4

2

うわぁ。

それをwhileループに入れる必要はありません。AJAX リクエストでサーバーを攻撃しているため、クライアントの JS もフリーズします。

While ループを削除し、関数を呼び出します。

function checkUser( u ) {
    $.ajax({
            url: "register.php",
            data: "Available=" + u.val(),
            type: "GET",
            cache: false,
            success: function(Answer){
                if(Answer == "Taken"){
                     alert("USERNAME TAKEN");
                }
                else{
                    $('#myform').submit();
                }

            }


         });
   }

それを呼び出すには、

<input type="submit" onclick="checkUser(data); return false;" />

または、DarkWater が推奨する方法

<form onsubmit="checkUser(data); return false;">

</form>
于 2012-10-05T18:16:29.137 に答える
1

これを試してくださいこれがうまくいくことを願っています

// assume myForm is your form element id.
$("#myForm").submit(function(e){
  e.preventDefault();
  var formEle = $(this);
  $.ajax({
    url: "register.php",
    data: "Available=" + u.val(),
    type: "GET",
    cache: false,
    success: function(Answer){
        if(Answer == "Taken"){
            updateTips("Потребителското име е заето!");
        } else {
           formEle.unbind("submit").submit();
        }
   }
  });
});
于 2012-10-05T19:21:52.827 に答える
1

単純な jqueryGET()関数を使用して ajax 投稿を作成する

function checkUser( u ) {
 $.get("register.php?availabe="+u.val(),function(data){
   if(data=="1")
  {  // echo 1 if username is available
        $("form").submit();
  }  //else it would not be submited 
    }) 
}
于 2012-10-05T18:17:31.787 に答える
1

その醜い while ループを取り除き、このプロパティを ajax 呼び出しに追加します。

async: false
于 2012-10-05T19:12:58.713 に答える