包含 jQuery $.post() 函数的函数的返回值

2024-02-23

我知道 AJAX 是异步的,等等。但我有以下代码:

function doesUsernameExist(element)
{
    // Check via AJAX (POST) if username already exists in the database
    var funcReturned = null;
    $.post(
        '_ajax_checkexist.php',
        {
            var: 'username',
            value: element.value
        },
        function(data) {
            funcReturned = (data.toLowerCase() == 'exists');
        },
        'data'
    );
    return funcReturned;
}

我明白why该函数没有正确返回值,但是我可以使用什么作为解决方法?这是针对 Validity 插件的,它需要由用户名是否存在功能。我无法使用 $.post 函数更改某些 HTML 元素的常见解决方法。它需要返回 true/false用户名是否存在.

我可以使用什么样的解决方法?我对此感到困惑。


如果调用是同步的,您可以返回一个值。这里有一个例子:

同步模式解决方案:

function doesUsernameExist(element)
{
    // Check via AJAX (POST) if username already exists in the database
    var funcReturned = null;
    $.ajaxSetup({async: false});
    $.post(
        '_ajax_checkexist.php',
        {
            var: 'username',
            value: element.value
        },
        function(data) {
            funcReturned = (data.toLowerCase() == 'exists');
        },
        'data'
    );
    $.ajaxSetup({async: true});
    return funcReturned;
}

您的代码的问题是,虽然$.post正在执行,该函数继续执行(异步),因此将返回null在你之前$.post ended.

异步模式的解决方案:
使用异步调用,您无法返回值,但可以调用回调或执行代码。这可能是一个异步解决方案:

function doesUsernameExist(element)
{    
    var funcReturned = null;
    $.post( //This post is asynchronous
        '_ajax_checkexist.php',
        {
            var: 'username',
            value: element.value
        },
        function(data) {
            funcReturned = (data.toLowerCase() == 'exists');
            userExistanceCallback(funcReturned);
        },
        'data'
    );
    //We don't return anything
}

function userExistanceCallback(funcReturned){
   if(funcReturned == true)
       alert("User exists!!");
   else
       alert("User does not exist!!");
}

希望这可以帮助。干杯

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

包含 jQuery $.post() 函数的函数的返回值 的相关文章

随机推荐