AJAX响应未定义。

时间:2014-11-03 13:37:30

标签: ajax promise

我正在创建一个AJAX调用,它会查询控制器并返回相应的响应。唯一的问题是响应将作为未定义的doe返回到AJAX cal的异步性质。我不确定如何告诉函数等待响应。这是我的代码:

查看:

jQuery(document).on("click", "#payment .membership", function(e) {
        e.preventDefault(); 
        var price = SignUpObject.membershipClick(jQuery(this).attr("data-membership-id"));
        alert(price);
    });

Javascript库函数(在对象中):

var SignUpObject = {
    membershipClick : function(membershipDetailsId) {           
        jQuery.ajax({
            type      :  'POST',
            dataType  :  'json',            
            url       :  'api/membership-choice',
            data      :  'membershipid=' + membershipDetailsId
        }).done(function(response) {
            return response
        });
    }
}

AJAX调用的PHP返回正确的响应,所以我不需要在这里包含它们。谁能告诉我如何让AJAX调用等待响应? 感谢

2 个答案:

答案 0 :(得分:0)

你有两个问题:

1)您在(异步)请求完成之前尝试同步调用响应。

2)membershipClick不返回请求对象,因此您无法将完成回调挂钩到它上面。

修复:

1)更改行

jQuery.ajax({...

return jQuery.ajax({

2)更改行

alert(price);

price.done(function(response) { alert(response); });

但是,变量price更好地命名为price_request,因为它存储了对请求的引用,而不是实际价格(即响应)。

答案 1 :(得分:0)

更改

}).done(function(response) {
return response

});

有关:

}), success: function(response) {
return response

};