如何从jQuery.steps返回AJAX调用的结果?

时间:2018-04-25 21:12:03

标签: jquery jquery-steps

我知道一个非常相似的问题是asked and answered here,但那里的答案并不适用于我。我不知道我做错了什么,或者过去18个月里jQuery或jQuery.steps是否有变化。

onStepChanging方法中,我有以下代码(为了清晰起见,我们会删除我们要删除的步骤的代码)......

    $.ajax({
      url: '/Home/ValidatePostcode',
      type: "GET",
      data: {
        postcode: postcode
      },
      success: function (result) {
        if (result) {
          return true;
        } else {
          return false;
        }
      }
    });

然而,这不起作用。 onStepChanging方法在AJAX调用之前返回,因此忽略return回调中的success语句。根据链接帖子中的答案,这应该有用。

并非我想同步执行此操作,但我尝试将async: false添加到AJAX调用中,但它没有任何区别。

任何人都知道如何才能让它发挥作用?我正在使用jQuery.steps v1.0.1(今天下午下载,所以他是最新版本)和jQuery v1.12.3。

1 个答案:

答案 0 :(得分:1)

我认为你很接近。

关键是您尝试过的“async:false”,但是“返回true”;并且“返回虚假;”从ajax成功方法中只返回ajax调用。 true / false值与调用堆栈上的原始onStepChanging方法无关。

  • 在ajax调用之前创建一个变量,比如“var response = false;”
  • 然后将async:false添加到ajax调用
  • 然后在您的成功方法中设置response = true;
  • 然后返回onStepChanging方法返回响应变量。 “return response;”

所有这些可能看起来像这样:

onStepChanging: function (...)
{
    var response = false;

    $.ajax({
        url: '/Home/ValidatePostcode',
        type: "GET",
        async: false,
        data: {
            postcode: postcode
        },
        success: function (result) {
            if (result) {
                response = true;
            }
        }
    });

    return response;
}

这应该有效。