完成AJAX调用后如何执行操作?

时间:2016-12-21 05:00:00

标签: javascript jquery ajax if-statement callback

我尝试在不同的地方调用一个函数。这就是我回归真假的原因。 我得到的问题是之前hasCreditCard有时间做的就是打电话,直接转到其他地方......

addManyRows

1 个答案:

答案 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 {
    ...
  }
}