我也有这个问题,它总是导致'用户名已经采取'。我该怎么修理这个东西?我需要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>
在你的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");
}
}
});
在注册页面您可以通过$_POST['username']
访问用户名
在发送ajax请求前使用setTimeout
setTimeout(function() {
// Just Pass
}, 4000);
这将确保请求必须在4秒后执行。
可以使用setTimeout函数。例如,下面的代码将在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秒后执行。
通过在success函数中使用setTimeout()
,您可以延迟您的响应消息。我还更改了对对象的数据赋值,这更好,因为jQuery将为您编码值。如果你像在你的原始代码传递一串数据,你负责编码,你需要在encodeURIComponent()
包装它。
$.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);
}
}