我尝试在不同的地方调用一个函数。这就是我回归真假的原因。 我得到的问题是之前hasCreditCard有时间做的就是打电话,直接转到其他地方......
addManyRows
答案 0 :(得分:1)
因为AJAX通话是asynchronous
而您的if-statement
并未等待通话结束。
两种解决方案:
#1
:您可以将回调传递给该函数,并在您的成功/错误处理程序中调用此回调:
getCreditCard($('#memberId').val(), function (hasCreditCard) {
if (hasCreditCard) {
...
} else {
...
}
})
function getCreditCard(memberId, nextStep) {
...
jQuery.ajax({
...
success: function (data, status, jqXHR) {
if (jqXHR.status == 200) {
nextStep(true)
return
}
nextStep(false)
},
error: function (jqXHR, status) {
nextStep(false)
}
})
}
#2
:您可以创建另一个全局函数并在成功/错误处理程序中调用此函数:
getCreditCard($('#memberId').val())
function getCreditCard(memberId) {
...
jQuery.ajax({
...
success: function (data, status, jqXHR) {
if (jqXHR.status == 200) {
nextStep(true)
return
}
nextStep(false)
},
error: function (jqXHR, status) {
nextStep(false)
}
})
}
function nextStep(hasCreditCard) {
if (hasCreditCard) {
...
} else {
...
}
}