我正在创建一个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调用等待响应? 感谢
答案 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
};