javascript - jQuery 通过父函数返回 $.post 回调

标签 javascript ajax jquery callback

Possible Duplicate:
Return Value from inside of $.ajax() function

以下面的函数为例:

function($data) {
    $.post(
        url,
        {
            'data': $data
        },
        function(response){
            return response;
        }
    );
}

我怎样才能使父函数:function($data) { ... }返回response

由于脚本的性质,我无法将其余逻辑放入后回调中。 (见下文)

var methods = {

        'email' : function(field) {
            var value = field.val();
            var response = false;
            field.addClass("loading");
            $.post(
               ajaxData.url, 
               {
                  'action':'validate_form',
                  'value': value,
                  'method': field.data('method')
               }, 
               function(response){
                   return response;
               }
            ).complete(function() {
                field.removeClass("loading");
            });
        },

        'password' : function(field) {
            var value = field.val();
            var response = {};
            if (value.length < 8) {
                response.result = false;
                response.message = 'Your password must be a minimum of 8 characters';
            } else {
                response.result = true;
                response.message = false;
            }
            return response;
        },

        'verify_password' : function(field, dependancies) {
            var value = field.val();
            var response = {};
            if (value != dependancies["password"].val()) {
                if (!dependancies["password"].val() || !value) {
                    return false;
                }
                response.result = false;
                response.message = 'Passwords do no match';
            } else {
                response.result = true;
                response.message = false;
            }
            return response;
        }
    }

其中 methods 的每个属性是一个可以被调用的函数,return值稍后在脚本中使用。

var response = methods[field.data('method')](field, field.data('dependancies'));

最佳答案

由于AJAXA代表异步,所以你不能按你想要的方式返回。您可以尝试使用如下回调函数:

function($data, callback) {
    $.post(
        url,
        {
            'data': $data
        },
        function(response){
            return callback(response);
        }
    );
}

例如:

var myObj = {
   myfunc: function($data, callback) {
        $.post(
            url,
            {
                'data': $data
            },
            function(response){
                return callback(response);
            }
        );
    }
}

myObj.myfunc($data, function(response) {
  // process here with response
});

关于javascript - jQuery 通过父函数返回 $.post 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11544799/

相关文章:

javascript - Jquery 数据表标题与正文不对齐

javascript - Jquery 从 POST 函数返回 [Object object]

jquery - 使用 IP 而不是 localhost 时,IE8 jquery 调用无法正确返回

javascript - 为什么 RegExp.test 在 IE 中消耗大量时间?

javascript - 使用热键根据快捷键触发按钮点击事件

javascript - 在 React Native 中检测来自 WebView 的按钮点击

javascript - AutoNumeric - 删除收到的值

javascript - 如何在 Phaser 3 中正确更新乐谱文本?

javascript - jQuery等js使用div.load时未定义src

jQuery 到原型(prototype),不确定 jQuery 的一些部分