如何将数据从AJAX成功事件返回到外部函数?

时间:2010-08-04 19:21:58

标签: jquery ajax

我希望下面的check_membership()函数返回AJAX“数据”。 但是,“result”一直设置为XHR对象,而不是返回的JSON对象。

我该如何解决这个问题?

function check_membership() {

    var result;

    result = jQuery.ajax({
        type: 'POST',
        url: '/ajax/member',
        dataType: 'json',
        async: false,
        success: function(data) {
            return data;
        }
    });

    return result;

}

感谢。

3 个答案:

答案 0 :(得分:2)

在从main函数返回之前,Javascript不会'等待'$ .ajax的成功回调,因此很有可能不会返回任何内容。您必须将async选项设置为false(这将在请求期间阻止浏览器)或修改您的策略,例如,使用同步Jax调用。通过做你想要最终完成 成功回调的内容。例如:

function update_membership_status() {
    jQuery.ajax({
        type: 'POST',
        url: '/ajax/member',
        dataType: 'json',
        success: function(json) {
            $("#status").text('Signed In:' + json.SignedIn + "  msg" + json.msg);
        }
    });
}

答案 1 :(得分:1)

var result = 
{
   ajax: function(){
        jQuery.ajax({
        type: 'POST',
        url: '/ajax/member',
        dataType: 'json',
        async: false,
        success: function(data) {
                return data.signedIn;
        }
     });
   }  
}

然后调用result.ajax();无论如何

答案 2 :(得分:0)

您可以使用 async 属性同步返回数据:

function check_membership() {
  var result = jQuery.ajax({
        type: 'POST',
        url: '/ajax/member',
        dataType: 'json',
        async: false
    });
 return result.SignedIn;
}