0

大家好,我在注册时尝试检查用户名的可用性,但我返回 false 时遇到问题,知道我必须提交表格吗

所以我用 2 vars 做到了 - 结果并等待,但是当我等待结果时页面冻结

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

使用一个简单的jqueryGET()函数来做一个ajax post

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 回答
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 回答