gpt4 book ai didi

php - 为什么这个函数返回 "undefined"?

转载 作者:行者123 更新时间:2023-12-02 20:30:59 24 4
gpt4 key购买 nike

我有一个表单验证函数,可以验证并检查用户名是否被采用(ajax)。

这就是我调用代码的方式:

 function validate(){
if(usernameValid()){
return true;
}
else {
return false;
}

}

我还提醒该函数以查看它返回的内容:

  alert(usernameValid());

问题是警报框在某些情况下会发出“未定义”警报,因此我的验证不会跳转到下一个字段,它会挂起。更具体地说,除了“length===0”之外,它在所有情况下都会发出“未定义”警报,然后它会发出错误警报,这是正确的。

这是 usernameValid 函数:

    function usernameValid(fld) {
if( $('#username').val().length !== 0 ) {
$.post("username_check.php", {
username: $('#username').val()
}, function(response){
response = escape(response);

if(response==1){
$('#username_error_invalid').show();
$('#username_error_empty').hide();
$('#username_error_taken').hide();
return false;
}
else if(response==2){
$('#username_error_taken').show();
$('#username_error_invalid').hide();
$('#username_error_empty').hide();
return false;
}
else {
$('#username_error_taken').hide();
$('#username_error_invalid').hide();
$('#username_error_empty').hide();
return true;
}
});
}
else{
$('#username_error_empty').show();
$('#username_error_invalid').hide();
$('#username_error_taken').hide();
return false;
}
}

有人知道出了什么问题,即为什么在我测试“响应”变量的情况下代码返回未定义?

顺便说一句:用户名验证本身有效(应该显示错误等),但它返回未定义...

谢谢

最佳答案

这是一个异步调用:

$.post("username_check.php", {....

因此,回调中的 return 语句在 usernameValid 返回后很久才发生(并且由于它在运行时没有返回任何内容,这是未定义)。

如果return false;,您应该调用另一个函数,例如:userNameInvalidFunction(),以及其他true的函数。 .或者只是继续提交等等。

另一种方法是使 AJAX 调用同步...但我强烈建议不要这样做,因为它在执行时会完全锁定用户的浏览器。

关于php - 为什么这个函数返回 "undefined"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4143580/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com