JQuery шаг плагин, чтобы перейти к следующему шагу от успеха AJAX - PullRequest
0 голосов
/ 06 марта 2019

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

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

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

Вот код 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';
    }
}

1 Ответ

0 голосов
/ 06 марта 2019

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

...