【问题标题】:True or false in jquery functionjquery函数中的真或假
【发布时间】:2014-02-10 11:10:12
【问题描述】:

我有这段代码,我想指定 validateUser 函数是真还是假。我该怎么做,因为在代码中 .post() 中已经有一个函数?

这里是代码

function validateUser() {

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

    $.post('usercheck.php', $("#form").serialize(), function (data) {
        var usercheck = data;

        if (usercheck != "") {
            $("#div").html("Username already exists");
            return false;
        } else {
            $("#div").html("ok");
            return true;
        }

    });
}

【问题讨论】:

  • 您可以使这个 ajax 调用同步。并在函数 validateUser 范围内声明一个变量 result 并在 post 调用中分配值 true 或 false ,然后在 post call 返回结果后添加 return 语句;

标签: jquery function


【解决方案1】:

问题是,$.post 是异步的。因此,您需要将回调传递给您的 validateUser 函数。

function validateUser(callback) {
  var user = $("#username").val();
  $.post('usercheck.php', $("#form").serialize(), function(data) {
    var usercheck = data;
    if(usercheck != "") {
      $("#div").html("Username already exists");
      callback(false);
    }
    else {
      $("#div").html("ok");
      callback(true);
    }
});

validateUser(function(valid) {
    if (valid) {
        alert('The user is valid');
    }
    else {
        alert('The user is not valid');
    }
});

【讨论】:

    【解决方案2】:

    你不能返回真或假,因为 jQuery.post 是异步运行的。一种解决方法是强制 post 同步运行,但我强烈建议您不要这样做。

    【讨论】:

      猜你喜欢
      • 2021-11-05
      • 2014-02-17
      • 1970-01-01
      • 2019-10-15
      • 2015-10-05
      • 1970-01-01
      • 2015-12-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多