javascript 函数总是返回 false

标签 javascript php jquery ajax

我正在尝试使用 jquery、ajax 和 php 验证 html 表单。我在 jquery 中编写了这个函数,使用 ajax post 请求检查用户名的可用性。但是,问题是它总是返回 false。我是 jquery 和 javascript 的新手。我已经尝试了很多,但我无法找出问题所在。请帮忙。

function isvalid_username()
{
var username=$('#username').val();
var option=false;
        if(username == "")
        {
            $('#username').removeClass('valid').addClass('invalid');
            $('#username_feedback').addClass('error').html("Please choose a username!!");
            option=false;
        }
        else if(username.length < 4)
        {
            $('#username').removeClass('valid').addClass('invalid');
            $('#username_feedback').addClass('error').html("Your username must be atleast 4 characters.");
            option=false;
        }
        else
        {
            $.post('php/check_username_avail.php',{ username : username },function(data){

                if(data == "false")
                {

                    $('#username').removeClass('valid').addClass('invalid');
                    $('#username_feedback').addClass('error').html("Sorry! That username is already taken. Try a different one.");
                    option= false;
                }
                else if(data == "true")
                {
                    $('#username').removeClass('invalid').addClass('valid');
                    $('#username_feedback').html("");
                    alert('Now it should return true');
                     option=true;
                }
                else
                {
                    $('#username').removeClass('valid').addClass('invalid');
                    $('#username_feedback').addClass('error').html(data);
                    option=false;
                }
            }).error(function(){
                alert("An error occurred. Unable to validate username");
            });
        }
        return option;
}

编辑:我已阅读 other post 。但我仍然没有找到验证表单的方法。我想在我的代码中使用此提交处理程序函数:

$('#signup_form').submit(function(event)
{
  if(isvalid_first_name() && isvalid_username() && isvalid_email() && isvalid_password())
  {
    alert('Submitting the form');
  }
  else
  {
   event.preventDefault();
   $('#submit_feedback').html("Please correct the above problems first");
  }

});

如果不能以这种方式完成,那么我应该使用什么其他技术来验证客户端的表单?

最佳答案

因为你没有等待 AJAX 完成并立即返回选项,这已经是错误的。尝试下面的代码。

    function isvalid_username(){
      var username=$('#username').val();
      var option=false;
        if(username == "")
        {
            $('#username').removeClass('valid').addClass('invalid');
            $('#username_feedback').addClass('error').html("Please choose a username!!");
             return option;
        }
        else if(username.length < 4)
        {
            $('#username').removeClass('valid').addClass('invalid');
            $('#username_feedback').addClass('error').html("Your username must be atleast 4 characters.");
             return option;
        }
        else
        {
            $.post('php/check_username_avail.php',{ username : username },function(data){

                if(data == "false")
                {

                    $('#username').removeClass('valid').addClass('invalid');
                    $('#username_feedback').addClass('error').html("Sorry! That username is already taken. Try a different one.");
                     return option;
                }
                else if(data == "true")
                {
                    $('#username').removeClass('invalid').addClass('valid');
                    $('#username_feedback').html("");
                    alert('Now it should return true');
                    option=true;
                    return option;
                }
                else
                {
                    $('#username').removeClass('valid').addClass('invalid');
                    $('#username_feedback').addClass('error').html(data);
                     return option;
                }
            }).error(function(){
                alert("An error occurred. Unable to validate username");
            });
        }
}

关于javascript 函数总是返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30834004/

相关文章:

Javascript 全局变量以及对它们及其部分的引用

javascript - 滚动 Pane 高度问题

php - 如何使用 PHP 将 XML 字符串中的值正确插入到 mysql 中?

javascript - 单击此图像/链接激活 jquery 弹出窗口?

javascript - 单击输入字段触发窗口调整大小

JavaScript 没有将元素分配给对象

javascript - 在 Typescript 中,Object.prototype 函数可以返回 Sub 类型实例吗?

php - 将 OpenSSL 公钥导出到文件

javascript - 检索具有多个系列的 Highcharts 的 JSON 数据?

javascript - Jquery 确认不工作