Php 如何将延迟添加到我为检查实时用户可用性而编写的函数中?

Php 如何将延迟添加到我为检查实时用户可用性而编写的函数中?,php,jquery,ajax,Php,Jquery,Ajax,我也有这个问题,它总是导致'用户名已采取'。我怎样才能修理这个东西?我需要ajax加载程序动画运行4秒钟,然后给用户任何消息 <script type="text/javascript"> $(document).ready(function() { $("#username").change(function() { $("#message").html("<img src='ajax-loader.gif' /> che

我也有这个问题,它总是导致'用户名已采取'。我怎样才能修理这个东西?我需要ajax加载程序动画运行4秒钟,然后给用户任何消息

<script type="text/javascript">
    $(document).ready(function() {
        $("#username").change(function() {
            $("#message").html("<img src='ajax-loader.gif' /> checking...");

            var username = $("#username").val();

            $.ajax({
                type: "post",
                url: "sign_up.php",
                data: "username=" + username,
                success:function(data) {
                    if(data == 0){
                        $("#message").html("<img src='tick.png' /> Username available");
                    } else {
                        $("#message").html("<img src='cross.png' /> Username already taken");
                    }
                }
            });
        });
    });
</script>

$(文档).ready(函数(){
$(“#用户名”).change(函数(){
$(“#消息”).html(“检查…”);
var username=$(“#username”).val();
$.ajax({
类型:“post”,
url:“sign_up.php”,
数据:“用户名=”+用户名,
成功:功能(数据){
如果(数据==0){
$(“#消息”).html(“可用用户名”);
}否则{
$(“#message”).html(“用户名已被使用”);
}
}
});
});
});

您的ajax调用中有错误,应该如下所示

$.ajax({
    url: "sign_up.php",
    data: {'username': username},
    type: "POST",
    success: function(data) {
        if(data == 0) {
            $("#message").html("<img src='tick.png' /> Username available");
        } else {
            $("#message").html("<img src='cross.png' /> Username already taken");
        }
    }
});
$.ajax({
url:“sign_up.php”,
数据:{'username':username},
类型:“POST”,
成功:功能(数据){
如果(数据==0){
$(“#消息”).html(“可用用户名”);
}否则{
$(“#message”).html(“用户名已被使用”);
}
}
});

在注册页面上,您可以通过
$\u POST['username']

在发送ajax请求之前使用setTimeout来访问用户名

setTimeout(function() { 
    // Just Pass
}, 4000);

这将确保请求必须在4秒后执行。

您可以使用设置超时功能。例如,下面的代码将在3秒后隐藏div

jQuery(document).ready(function () {
    //hide a div after 3 seconds
    setTimeout( "jQuery('#div').hide();",3000 );
});

我可能会使用setTimeOut()函数,其工作原理如下:

setTimeout(function() {
      // any script here will execute after 2 seconds
}, 2000);
在这里,代码将在2秒后执行。 希望这有帮助。

通过在成功函数中使用
setTimeout()
,您可以延迟响应消息。我还将数据分配更改为对象,这更好,因为jQuery将为您编码值。如果像原始代码中那样传递一个数据字符串,那么编码由您负责,您需要将其包装在
encodeURIComponent()

$.ajax({
类型:“post”,
url:“sign_up.php”,
数据:{username:username},
成功:功能(数据){
setTimeout(函数(){
var msg=data==0?“用户名可用”:“用户名已使用”;
$(“#message”).html(msg);
}, 4000);
}
}

我认为jQuery支持请求格式json或文本字符串,因此他的代码应该是有效的。@kuldeep.kamboj,Sam使用对象语法是正确的,因为jQuery将对传输值进行编码。OP的代码仅在值不包含任何特殊字符(如
&
)时才起作用,这将破坏URL编码答:我勾选了你的答案,但我知道我只能给一个答案加上绿色指示:(哦,不用担心,很高兴它对你有帮助^_^
$.ajax({
        type: "post",
        url: "sign_up.php",
        data: {username : username},
        success:function(data){

            setTimeout(function(){
                var msg = data == 0 ? "<img src='tick.png' /> Username available" : "<img src='cross.png' /> Username already taken";

                $("#message").html(msg);
             }, 4000);
        }
}