javascript - 如果 ajax 结果为 true,我需要该函数返回 true

标签 javascript jquery ajax

这是我的代码:

    function validateField(field, input) {

    if (field && input) { 

        $.ajax({
            type: 'POST',
            url: '<?php echo site_url("ajax/verify"); ?>',
            dataType: 'json',
            data: { 'field' : field, 'input' : input},
            success: function(result) {
                var available = result.available;
                if (available == 1) {

                   // return true (for the entire function);
                }

            }
        });
    } 

    return false;


}

最佳答案

现在最正确的做法是使用 $.Deferred :

function validateField(field, input) {
    if (field && input) { 
        return $.ajax({
            type: 'POST',
            url: '<?php echo site_url("ajax/verify"); ?>',
            dataType: 'json',
            data: { 'field' : field, 'input' : input}
        }).pipe(function(result) {
            var available = result.available;
            return available == 1;
        });
    }

    return $.Deferred().resolve(false);
}

validateField('somefield', 'someinput')
    .done(function(result) {
        if (result) {
            alert('it is true');
        } else {
            alert('it is false');
        }
    });

以及基于回调的解决方案(我不喜欢它;-):

function validateField(field, input, callback) {
    var cb = $.isFunction(callback) ? callback : $.noop;

    if (field && input) { 
        $.ajax({
            type: 'POST',
            url: '<?php echo site_url("ajax/verify"); ?>',
            dataType: 'json',
            data: { 'field' : field, 'input' : input},
            success: function(result) {
                var available = result.available;
                cb(available == 1);
            }
        });
        return;
    }

    cb(false);
}

validateField('somefield', 'someinput', function(result) {
    if (result) {
        alert('it is true');
    } else {
        alert('it is false');
    }
});

关于javascript - 如果 ajax 结果为 true,我需要该函数返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12101153/

相关文章:

javascript - 加载动态添加的输入字段的值

javascript - 无法在Phonegap中播放YouTube视频

javascript - div 背景轻松,悬停时透明覆盖

javascript - 在 Popup 上,通过 ajax 读取数据两次 : php mysql

Javascript 多重比较表达式语法

javascript - 在单页应用程序中切换样式表

jquery - 操作元素内的文本

javascript - jQuery 动画宽度元素溢出

php - 我无法返回 MySQL 数据

jquery - JQuery 中的 ASP.NET MVC Url.Action 无法识别