Плагин шага Jquery переходит к следующему шагу от успеха ajax

Я использую плагин шага jquery с валидатором формы, чтобы проверить, вставлен ли ввод (не пустой в требуемом столбце), и проверить ответом ajax (проверить значение из бэкэнда).

Цель: нажмите «Далее» и перейдите к мастеру шага 1 (с шага 0) после ответа ajax (путем возврата true)

Но я застрял даже на ajax return true, но все еще не могу перейти к следующему шагу. Даже если я пытаюсь ввести "gotvalue" на входе, я также не могу продолжить.

Вот код jquery:

var form = $("#redeem-form").show();

$.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
            }
});

form.steps({
    headerTag: "h2",
    bodyTag: "section",
    transitionEffect: "slideLeft",
    labels: {
        finish: "Confirm and Redeem"
    },
    onStepChanging: function (event, currentIndex, newIndex)
    {   
        var x = $("#input_access_code").val();
        console.log(x);
        if (currentIndex === 0)
        {   
            $.ajax({
                type: "GET",
                url: "{{route('checkRedeem')}}",
                data: {'access_code':$("#input_access_code").val()},
                success: function(data)
                {
                    let datas = data;
                    console.log(datas);
                    if(datas == 'no'){
                        return false;
                    }
                    else{
                        return true;
                    }
                }
            });

        }
    },
    onStepChanged: function (event, currentIndex, priorIndex){...},
    onFinishing: function (event, currentIndex){...},
    onFinished: function (event, currentIndex){...}
});

Вот контроллер в laravel:

public function checkRedeemCode(Request $request)
{
    $redeemCode = $request->access_code;

    if($redeemCode == "gotvalue"){
        return $redeemCode;
    }
    else{
        return 'no';
    }
}

person JohnnyCc    schedule 06.03.2019    source источник


Ответы (1)


Причина кроется в том, что ваша функция ajax асинхронна. Пожалуйста, добавьте async: false в вызов ajax

person quita    schedule 06.03.2019