Php 如何将延迟添加到我为检查实时用户可用性而编写的函数中?
我也有这个问题,它总是导致'用户名已采取'。我怎样才能修理这个东西?我需要ajax加载程序动画运行4秒钟,然后给用户任何消息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
<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);
}
}